'Education'에 해당되는 글 58건

  1. 2012.02.07 PPT,EXCEL 창 여러개 띄우기 by 초상큼발랄
  2. 2012.01.18 vi 명령어 by 초상큼발랄
  3. 2012.01.13 Compiler by 초상큼발랄
  4. 2012.01.13 Variable by 초상큼발랄 1
  5. 2011.04.28 Ubuntu 접속시 느림 현상 by 초상큼발랄
  6. 2011.03.11 컴퓨터 구조론 by 초상큼발랄
  7. 2011.03.11 운영체제 by 초상큼발랄 2
  8. 2011.03.10 우분투 커널 컴파일 by 초상큼발랄
  9. 2011.01.28 vi 명령어 모음 by 초상큼발랄 1
  10. 2010.08.12 Android SDK 설치 방법 by 초상큼발랄 1

 

MS Office 2007 여러개 창 띄우기

ppcore.dll 파일을

"C:\Program Files\Microsoft Ofiice\Office 12" 위치에 복사

기존의 ppcore.dll 파일은 복원을 위해 삭제말고 이름 변경 강추



'Education > ETC_work' 카테고리의 다른 글

요일 프로그램  (2) 2009.10.13
Posted by 초상큼발랄
l


1. 파일 전체 문자 치환 명령어

:%s/이전문자/치환문자/g

2. 주석처리

V로 비주얼 블록 선택한 다음에, :norm i//

해제 :norm xx

3. 파일명, 상태, 현재 줄번호, 상대적인 위치등을 출력

^G

'Education > Linux Kernel' 카테고리의 다른 글

Ubuntu 접속시 느림 현상  (0) 2011.04.28
우분투 커널 컴파일  (0) 2011.03.10
vi 명령어 모음  (1) 2011.01.28
우분투 vi editor 세팅  (0) 2010.08.05
우분투 커널 소스 & 컴파일  (0) 2010.08.04
Posted by 초상큼발랄
l

Compiler

Education/C++ programming 2012. 1. 13. 11:28

 
  1. 컴파일러(Compiler)

    • 컴퓨터가 이해할 수 있는 기계어 코드로 변역해주는 역할

    • 컴파일 프로그램은 대개 디스트에 저장,

    • 컴파일러는 실행 시에 모든 문장을 먼저 구문적으로 하나씩 분해

    • 다른 문장을 참조하는 경우 그 문장이 정확하게 참조될 수 있도록 여러번의 연속적인 상태에서 결과코드 생성

    • 원시프로그램(Source program)을 기계어(Machine language)로 변환시켜 목적프로그램(Object program)으로 번역해주는 특수한 프로그램

      • 목적프로그램(Object program) : 프로세서가 한 번에 한 명령씩 처리하거나 또는 실행시킬 수 있는 기계코드

    • 목적파일을 실행파일로 바꾸기 위한 처리

      • 실행파일이 운영체제의 요건에 맞도록 형태를 바꿈

      • 스타트업(StartUp)이라는 추가코드 가져와야 함

      • 링크(Link) : 목적파일에 실행파일로 만드는 동작

      • 링커(Linker) : 링크를 해주는 프로그램

    • 프로그램 작성되는 과정

      • 소스파일은 컴파일러에 의해 컴파일되어 목적파일 됨

      • 목적파일은 링커에 의해 링크되어 최종적으로 실행파일 됨

        [소스코드] --컴파일--> [목적파일] --링커--> [실행파일] 


    • 빌드(Build) : 컴파일과 링크를 통해 실행파일을 만드는 과정

    • 소스파일을 번역하여 곧바로 실행파일을 만들지 않고 목적파일을 거치는 이유

      • 여러개의 소스를 합쳐서 하나의 실행파일 생성때문임

    • 각 소스파일의 명령을 번역한 기계 코드를 가진 목적 파일의 연결하여 하나의 실행파일 생성

    • 링크단계에서 이미 만들어진 라이브러리도 결합


  1. 인터프리터(Interpreter)

    • 원시코드 명령문들을 한 번에 한 줄씩 읽어들여서 실행하는 프로그램

    • 원시프로그램 문장들이 입력되면 인터프리터는 문장들의 기능을 정의하고 그 기능대로 수행됨

    • 컴퓨터의 주기억장치에 저장된 프로그램이나 또는 많은 프로그램에서는 ROM 형태로 되어있음

    • 목적프로그램에 의해서 수행되는 것보다 프로그램의 수행속도가 훨씬 느림

      • 각 명령들을 매번 통역해야하기 때문임


  1. 컴파일러와 인터프리터의 차이점

    • 실행

      • 컴파일러

원시 프로그램 -> 컴파일러 -> 목적 프로그램

      • 인터프리터

원시 프로그램-> 인터프리터 -> 실행 명령문

    • 프로그램 수행 속도

      • 컴파일러

        • 번역시간은 조금 걸리지만 수행속도 빠름

          • 프로그램 단위로 프로그램 전체를 함께 번역하고 함께 수행

      • 인터프리터

        • 수행속도 느림

          • 한 줄씩 한 줄씩 번역하고 수행

        • CPU 사용 시간 낭비

    • 메모리 할당

      • 컴파일러

        • 메모리를 많이 사용

          • 프로그램을 번역한 뒤, 번역된 기계어를 저장하기 위해 메모리 사용

      • 인터프리터

        • 메모리를 사용하지 않음

          • 프로그램을 한 줄씩 번역하고 곧바로 수행하므로 메모리 사용안함

    • 프로그램 저장 위치

      • 컴파일러

        • 디스크에 저장

      • 인터프리터

        • ROM에 저장

    • 사용분야

      • 컴파일러

        • 실행 시간의 효율성을 중하는 프로그래밍 언어

      • 인터프리터

        • 사용자의 융통성을 중시하는 프로그래밍 언어

    • 정리

비교단위

컴파일러

인터프리터

번역단위

프로그램 단위 번역

명령 줄 단위로 번역

수행과정

함께 번역, 함께 수행

줄 단위로 변역 수행

목적프로그램

번역 후 저장을 위해 필요

바로 수행하므로 불필요

효율성

효율성 좋음

효율성 떨어짐

기억장소

많이 필요

적게 필요



'Education > C++ programming' 카테고리의 다른 글

Variable  (1) 2012.01.13
리눅스 c++ 컴파일  (2) 2009.11.24
Triangle & Rectangle program code  (0) 2009.11.24
피보나치 수열  (2) 2009.11.24
Posted by 초상큼발랄
l

Variable

Education/C++ programming 2012. 1. 13. 11:16

 
  1. 변수(Variable)

    • 전역변수(Global variable)

      • 선언 위치 : 함수 바깥에서 선언

      • 통용 범위 : 프로그램 전체가 공유

        • 선언된 위치 이후에는 어디서든지 이 변수를 사용 가능

      • 파괴 시기 : 프로그램과 동일

        • 실행 직후에 생성되어 프로그램이 실행되는 동안에는 계속 메모리를 차지하고 있으며 프로그램이 종료되면 파괴됨

      • 생성되는 기억 장소 : 정적 데이터 영역

        • 한번 정해진 메모리 위치에 계속 남아 있어야하므로 정적 데이터 영역에 생성

        • 정적 데이터 영역 (페이지 참조)

          • 프로그램 코드 바로 다음에 위치하는 실행 파일의 한 부분으로 프로그램이 실행될 때 메모리롤 로드되어 실행 중에 계속 유지

      • 초기화 : 0 으로 초기화

        • 별도의 초기식이 없더라도 0으로 초기화

        • 초기화와 소멸은 임의의 순서대로 이뤄짐

    • 지역변수(Local variable)

      • 선언 위치 : 함수 내부에서 선언

      • 통용 범위 : 자신이 선언된 함수

        • 자신이 선언된 함수에 소속되어 있기 때문에 함수 외부에서는 이 변수 사용 불가

      • 파괴 시기 : 변수가 선언된 특정 함수 내부 종료

        • 특정 함수 내부에서만 사용되므로 함수가 실행 중일때만 메모리를 차지

        • 특정 함수가 종료가 되면 지역변수도 함께 파괴

      • 생성되는 기억 장소 : 스택(Stack)

        • 프로그램 실행중에 생성, 파괴를 반복하므로 스택에 생성

        • 스택에 생성되기 때문에 통용 범위가 국한되고 종료되면 같이 사라짐

        • 스택(Stack)

          • 지역변수, 인수, 함수 실행 후 돌아갈 번지 등이 스택에 생성되었다가 사라졌다가를 반복

      • 초기화 : 초기화되지 않음

        • 별도의 초기식이 없을 경우 초기화되지 않음

        • 초기값을 명시적으로 지정

        • 지역변수가 생성된 스택 위치의 값이 그대로 출력

        • 스택에 어떠한 값이 들어있는지 예측할 수 없는 쓰레기값이 존재

      • 장점

        • 함수의 독립성 높임

        • 디버깅 효울 향상

        • 메모리 절약

        • 재귀 호출이나 상호 호출 같은 특별한 기법에서 필요


  1. 정적(Static)

    • 정적 변수(Static variable)

      • 기억장소는 전역적이고 통용범위는 지역적인 정적 변수

        • 선언 위치 : 함수의 선두

        • 통용 범위 : 함수 내부

        • 생성되는 기억 장소 : 정적 데이터 영역

        • 초기화 : 0 으로 초기화

          • 단 한번의 초기화

          • 정적 변수가 선언된 함수가 여러번 호출되더라도 초기화는 프로그램 생성할 때 한번만 초기화

    • 정적 함수(Static method)

      • 기억장소는 전역적이고 통용범위는 지역적인 정적 함수

      • 해당함수는 현재 파일 내에서만 사용

        • Internal linkage : 정의된 파일 내에서만 사용 가능

      • extern 키워드를 사용하더라도 외부 파일에서 해당변수 참조 불가능


  1. 외부 변수(External variable)

    • 외부 변수(External variable)

      • 함수의 어느 곳에서든지 선언될 수 있으며 프로그램의 어느 부분에서 사용될수 있는 변수

      • 선언된 이후 모든 함수에서 사용할 수 있는 변수

      • 초기화 : 0으로 초기화

      • 주로 파일간에 변수를 공유할 목적으로 이용


  1. 레지스터(Register)

    • 레지스터(Register)

      • CPU를 구성하는 부품 중 하나

      • CPU가 데이터를 처리하기 위해 사용되는 임시 작업장

      • 속도는 매우 빠름

      • 크기 : CPU의 비트수를 결정하는 중요한 기준

    • 레지스터 변수(Register variable)

      • 저장할 수 있는 변수 타입

        • int, unsigned, 포인터 형 등의 32비트형(32비트 일 경우)

      • 레지스터 변수는 두 개까지만 선언 가능

        • 만약 세 개 이상의 레지스터형 변수 선언시, 최초 두개의 레지스터 변수만 레지스터형이 되고 나머진 지역변수로 됨

        • CPU의 레지스터 개수가 많지 않기 때문에 레지스터형 변수 2개만 선언

      • 레지스터 변수는 지역변수에만 지정 가능

        • 레지스터는 한정된 자원이기 때문임

      • 빠른 속도를 얻기 위해 레지스터 변수를 사용

      • 대규모의 루프를 돌린다거나 할 때, 루프 제어 변수를 레지스터형으로 선언

        • 이 변수의 읽기, 증감 속도가 빨라지거나 전체 루프의 실행속도 빨라짐

      • & 연산자 사용 불가

        • 레지스터형 변수는 메모리에 생성되는 것이 아니기 때문에 사용 불가

        • CPU 내부에 있기 때문에 번지를 가지지 않으므로 &연산자로 이 변수의 메모리 주소 조사 불가능

      • * 연산자 사용 가능


  1. 프로그램(Program)

    • 프로그램 구성(Code, Data, Heap, Stack register)

      • 코드(Code)

        • 프로그램의 코드 자체를 구성하는 명령이나 기계어 명령이 존재

        • read-only 권한이므로 이곳에 데이터를 쓰려면 access violation 일어남

        • CPU가 읽어 들여 수행하므로 text라 부름

      • 데이타(Data)

        • 전역변수, 정적변수, 초기화된 배열과 그 구조들이 저장되는 영역

        • 프로그램이 시작될때 생성되고 프로그램이 종료 될 때 시스템에 반환

      • (Heap)

        • 프로그래머가 필요에 의해 동적으로 할당하는 메모리가 위치하는 영역

        • C++(또는 JAVA)에서 new, C에서는 malloc으로 할당

        • C 또는 C++에서는 할당된 메모리 해제 필수

        • JAVA에서는 자동으로 가비지콜렉션(Garbage collector)에 의해 자동 해제

        • 프로그램은 기본적으로 1MB 크기의 힙 영역을 할당

      • 스택(Stack)

        • 지역변수, 매개변수 및 복귀번지 등등 저장되는 영역

        • 함수 호출시 스택 영역에 생성되고 사용된 후 시스템에 반환

        • 함수 인자(Argument)를 보낼때는 인수를 역순으로 보낸 뒤 복귀 번지를 저장 → 선입후출(First In Last Out)

        • 쓰레드(Thread) 1개씩 생성

        • 기본 크기는 1MB이며, 용량 초과시 오버플로우(Stack overflow)발생

    • 코드, 데이타, 힙 영역은 하위 메모리 부터 할당

      • 데이타 영역 : 컴파일 타임(compile-time) 때 결정

        • compile-time에 데이터 영역 및 스택의 크기를 계산해서 필요한 메모리 공간의 정보를 파일에 함께 갖음

      • 힙 영역 : 런타임(run time)시 요구할 때마다 사용

    • 스택 영역은 상위 메모리 부터 할당

'Education > C++ programming' 카테고리의 다른 글

Compiler  (0) 2012.01.13
리눅스 c++ 컴파일  (2) 2009.11.24
Triangle & Rectangle program code  (0) 2009.11.24
피보나치 수열  (2) 2009.11.24
Posted by 초상큼발랄
l

우분투의 SSH 서버 연결 시 느릴 경우

1. /etc/ssh/sshd_config 파일
2. "UsePAM yes"으로 된 부분을 찾아서 주석 처리
3. SSH를 재시작

'Education > Linux Kernel' 카테고리의 다른 글

vi 명령어  (0) 2012.01.18
우분투 커널 컴파일  (0) 2011.03.10
vi 명령어 모음  (1) 2011.01.28
우분투 vi editor 세팅  (0) 2010.08.05
우분투 커널 소스 & 컴파일  (0) 2010.08.04
Posted by 초상큼발랄
l
1. 다음 각 설명에 해당하는 것의 번호를 모두 써라.
    (1) Ideal CPI를 줄이는 것들은?
Software pipelining, Superscalar
    (2) Data Hazard stall을 줄이는 것들은?
Software pipelining, Compiler speculation
    (3) Control Hazard stall을 줄이는 것들은?
Compiler speculation, Branch prediction, Loop unrolling
2. Scoreboard에서
    (1) 1st stage(ID1)에서 stall되는 경우 두 가지는?
Structual Hazard 나 WAW hazard 발생할 경우 
    (2) 2nd stage(ID2)에서 stall되는 경우는?
Data Hazard가 발생할 경우
3. (1) Coarse-grained multithreading은 fine-grained multithreading과 어떻게 다른가?
Fine-grained multithreading : 각 명령어 마다 스레드를 교체
                             여러 스레드는 인터리빙 방식으로 실행
Coarse-grained multithreading :  L2 캐시 미스와 같이 오랜 시간이 걸리는 긴 스톨의 
                                           경우에만 발생
   (2) Coarse-grained multithreading의 장점과 단점을 설명하라.
- 장점: 빠른 스레드 스위칭을 구현할 필요를 덜어준다.
          각 스레드의 실행 지연 시간도 줄여준다.
- 단점: 파이프라인 시작 오버해드가 크기때문에 짧은 스톨에서 처리속도 저하를 극복할 수 있는 능력을 제한한다.
  (3) Fine-grained multithreading과 simultaneous multithreading의 차이점은?
Fine-grained multithreading은 한 클럭 사이클에 대하여 하나의 스레드만 명령을 이슈하지만 Simultaneous multithreading은 한 클럭 사이클에 대하여 여러 스레드가 명령을 이슈한다
4. MSI Writeback Invalidation Snoop-based cache coherence protocol에서
   (1) Shared 상태인 block을 processor가 요청해서 write hit인 된 경우 이 block은 어떤 상태가 되는가?
Modified
   (2) 그 외에 이 cache의 controller가 하는 일은? 
           
   (3) 이 때 이 block을 가지고 있는 다른 cache controller(s)는 어떤 동작을 하며, 이 block을 어떤 상태로 만드는가?

   (4) Update protocol이라면 (3)이 어떻게 달라지겠는가?

5. Cache miss의 종류 4 가지를 쓰고, 각각이 발생하는 원인을 서술하라.
A. Compulsory miss( 강제 미스)
    블록에 대한 처음 엑세스는 캐시에서 발견할 수 없다.
    왜냐하면 블록이 먼저 캐시로 인출되어야 하기 때문이다.
B. Capacity miss(용량 미스)
    만약에 캐시가 프로그램의 실행시간 동안 모든 블록을 갖고 있을수 없다면(강제미스에 추가하여) 용량 미스가 발생된다. 왜냐하면 한번 인출된 블록이 교체된 후 다시 인출되어야 하기 때문이다.
C. Conflict miss(충돌 미스)
   블록 배치 방식이 완전 연관 방식이 아닐 경우( 강제미스와 용량미스에 추가하여) 충돌미스가 발생한다. 왜냐하면 충돌된 블럭들이 같은 집합에 사상되면 이 블록은 교체된 후에 나중에 다시 인출되기 때문이다.
D. Coherence miss(일관성 미스)
    멀티프로세스에서 여러 캐시의 내용에 대한 일관성을 유지하기 위하여 캐시 플러시(flush)에 의해 발생되는 미스이다.
 

6. Cache의 miss rate를 낮추기 위한 방법 5 가지를 열거하고, 각각은 위 6번 문제의 miss 중 어느 miss를 줄이는지 써라.

A. 블럭크기를 크게한다.(Compulsory)
B. High Associativity(Conflict)
C. Victim Caches(Conflict)
D. Pseudo Associative Caches
E. Hardware Prefetching of Instructions and Data(Compulsory)
F. Software Prefetching of Data
G. Compiler Optimization(Conflict)
H. Skew Associative Cache(Conflict)
I. Large Cache(Capacity)


'Education > Operating System' 카테고리의 다른 글

운영체제  (2) 2011.03.11
이벤트 드리븐  (0) 2010.06.28
스레드 컨텍스트 스위치 시점 알 수 있는 방법  (0) 2010.06.28
geekos  (3) 2010.06.27
chapter 7. Memory  (2) 2009.12.11
Posted by 초상큼발랄
l

1. Explain the differences between Preemptive Scheduling and Non-Preemptive Scheduling. What are the pros and cons of those?

A. Preemtive Scheduling(선점형 스케줄링) 

- 어떤 스레드가 CPU를 사용하고 있는 동안 다른 스레드에 의해 선점당하는 스케줄링 방식
- 장점: 우선순위가 높은 프로세스가 먼저 수행되어야 할 때 유용
           대화식 시분할 시스템이나 실시간 시스템에 유용
- 단점: 프로세스간에 문맥 교환이 자주 발생하기때문에 이로 인해 오버헤드가 크다.

B. Non-Preemtive Scheduling(비선점형 스케줄링)

- 어떤 스레드가 CPU 사용권을 다른 스레드에게 이양한 후에 다른 스레드가 그 CPU를 사용할 수 있게 되는 방식
- 프로세스가 일단 실행 상태(Running State)에 진입하게 되면 종료되거나 비자발적으로 CPU를 놓을 때까지는 CPU를 빼앗기지 않는다.
- 장점: 모든 프로세스들에 대한 공정한 요구처리가 가능하다.
           응답시간 예측이 용이하다.
- 단점: 짧은 작업이 긴 작업을 기다리는 경우가 초래한다.

2. Explain the Virtual Memory? What are the benefits of that?

- 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능한 기법으로 애플리케이션이 요구하는 메모리와 하드웨어 메모리 관리 유닛(MMU) 사이에 논리적인 계층을 두어 동작한다.
- 각 프로세스에게 독립적인 주소 공간을 제공하여 메모리 보호, 접근 관리등이 보장된다.
-  장점

○ 여러 프로세스를 동시에 실행 가능
사용할 수 있는 물리메모리보다 많은 메모리를 필요로 하는 애플리케이션을 실행가능하게 함
○ 프로그램 코드 중 일부만 메모리에 로드해도 프로세스 실행가능
○ 라이브러리나 프로그램의 메모리 이미지 하나를 프로세스 사이에서 공유가능
○ 프로그램 재배치 가능
○ 기계 독립적 코드 작성 가능

3. What is Cache Memory? And are the benefits of using that?

- 빠른 접근 시간을 제공하는 기억 장치
- 느린 메모리 때문에 발생되는 프로세서 코어에 가해지는 메모리 엑세스 병목현상 감소
- 프로세서와 메모리 사이의 병목현상을 줄이기 위한 고속 메모리
- 지역성을 적극 활용한 것으로 자주 사용되는 데이터를 캐시에 저장하여 프로세서가 원활히 데이터를 사용할 수 있도록 함
- 장점

○ 가장 빠른 메모리의 속도에 근접한 메모리를 제공한다.

4. Explain the VFS(Virtual File System)?

- 표준 유닉스 파일시스템과 관련한 모든 시스템 콜을 처리하는 커널 소프트웨어 계층
- 실제 파일 시스템의 구현과 사용자 프로세스 사이에 존재하는 추상화 계층
- 여러 종류의 파일시스템에 대해 일반적인 공통 인터페이스를 제공

5. What is PCB(Process Control Block)? And what kinds of information are there?

- 수행 프로세스를 인터럽트 한 후 나중에 그 인터럽트가 발생되지 않은 것처럼 프로세스 수행을 재개할 수 있도록 충분한 정보를 유지하는 것
- 프로세스 식별자, 상태, 우선순위, 프로그램 카운터, 메모리 포인터, 문맥교환, 입출력 상태 정보, 어카운팅 정보

6. Explain the Paging Mechanism in memory management.

- 가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지라고 한다. 주소공간을 페이지 단위로 나누고 실제 기억공간은 페이지 크기와 같은 프레임으로 나누어 사용한다.
- 프로그램을 페이지 단위로 나누었기 때문에 프로그램 실행 시 모든 페이지가 메모리에 로드될 필요없이 요구된 페이지만을 로드함으로써 여러 프로세스를 실행하는 것이 가능해진다.

7. What is Race Condition among processes? How can we solve the problem?

- 다수의 프로세스나 쓰레드가 공유 자원을 동시에 읽거나 쓰려고 하는 상황
- 두 개 이상의 프로세스가 공유 데이터 항목을 읽고 쓰는 상황으로, 최종 수행 결과는 프로세스들의 상대적인 수행 순서에 따라 달라질 수 있다.
- 해결 방안: Locking과 Non-Preemption
                  상호배제를 통해 임계자원, 임계영역에 단 하나의 프로세스만 접근 할 수
    있도록 한다.
     세마포어와 모니터가 사용된다.
- 경쟁 관계에 있는 프로세스들이 존재하는 경우 상호배제, 교착상태, 기아라는 세가지 제어 문제가 발생한다.


- Race condition을 해결하기 위한 방법은 two process solution, Multiprocess solution, synchronization H/W, semaphore방법 등을 이용하여 해결 할 수 있다. Two process solution에는 하나의 플래그를 사용하는 것과, 두개의 플래그를 사용하는 방법이 있고, Multiprocess solution은 Bakery 알고리즘이라고도 하며 번호를 부여받은 순서대로 처리된다. Synchronization H/W는 test, set, swap 3개의 명령으로 구현되고 semaphore는 P와 V 두개의 atomic한 연산에 의해서만 증감시킨다.

'Education > Operating System' 카테고리의 다른 글

컴퓨터 구조론  (0) 2011.03.11
이벤트 드리븐  (0) 2010.06.28
스레드 컨텍스트 스위치 시점 알 수 있는 방법  (0) 2010.06.28
geekos  (3) 2010.06.27
chapter 7. Memory  (2) 2009.12.11
Posted by 초상큼발랄
l

1.    Ubuntu에서 커널 컴파일 하기

 

* 아래 나와있는 것은 전부 root계정 기준입니다.

 

1)    먼저, 커널 컴파일에 필요한 것들을 설치합니다.

apt-get install build-essential bin86 kernel-package

apt-get install libncurses5-dev

libncurses의 경우 저렇게 명령어 쳐주면 자동으로 현재(08.05.11) 가장 최신인 5.6버전을 받습니다.

 

 

 

2)    커널 소스 다운로드, 컴파일 옵션

예전 버전들이 이곳에 있습니다. 확장자가 bz2인 파일을 받습니다.

ftp://ftp.kernel.org/pub/linux/kernel/v2.6/

다운로드 위치는 상관없으나 여기서는 /usr/bin 기준으로 말하겠습니다.

/usr/bin 디렉토리로 이동하여 압축을 풀어줍니다. tar xjvf linux-2.6.24.tar.bz2

압축을 푼 화면 입니다.

linux-2.6.24-16-generic은 우분투 8.04 설치 시 기본 커널 버전

이제 압축 푼 디렉토리를 소프트링크를 통해 연결시켜 줍니다.

ln –s /usr/src/linux-2.6.24 /usr/src/linux

 

 

 

 

이제 커널 컴파일 옵션을 줘야 하는데, 여기서는 지금 기존에 있는 옵션파일을 불러와서 컴파일 하겠습니다. (수동으로 옵션 주실 분은 아래 참고하세요 make menuconfig부분 참고)

/boot 디렉토리에 보면 지금 돌고있는 커널(uname –r로 확인)config파일이 있습니다. 이것을 /usr/src/linux 디렉토리에 .config이라는 이름으로 복사해 줍니다.

cp /boot/config-2.6.24-16-generic .config

 

 

*make menuconfig 명령을 통해 기존 config이 아닌 새로운 옵션으로 컴파일 할 수 있습니다.

 

 

 

 

이 과정은 반드시 기존의 config을 복사하신 분은 안 하셔도 됩니다. 새롭게 옵션 주실 분은 여기서 조정할 수 있습니다. 옵션을 주시고 나가실 때 저장하면 .config 파일이 생성됩니다.

3)    컴파일 시작

 

make clean 한 번 해주시고

make-kpkg --initrd --stem linux --revision=cusom.1.0 kernel_image kernel_headers

 

--revision 부분은 적고 싶으신 대로 적으시면 됩니다.

이제 컴파일 됩니다. 저 같은 경우에는 virtual box환경에서 3시간 걸렸습니다.

끝나고 나면 header와 image 두 개의 deb 파일이 생성됩니다.

이것을 설치해주면 되겠습니다.

 

dpkg –i linux-headers-2.6.24.custom_i386.deb

dpkg –i linux-image-2.6.24.custom_i386.deb

 

설치된 커널 이미지는 시냅틱 패키지 관리자에서 제거 가능합니다.

 

자동으로 부트로더에 등록되어 처음 부팅시에 esc를 눌러 커널을 선택할 수 있습니다.

cat /boot/grub/menu.lst 로 등록된 커널 확인 가능

커널이 바뀌어서 하드웨어 드라이버는 재설치 하셔야 합니다.

출처: http://smartsaver.springnote.com/pages/1173140

'Education > Linux Kernel' 카테고리의 다른 글

vi 명령어  (0) 2012.01.18
Ubuntu 접속시 느림 현상  (0) 2011.04.28
vi 명령어 모음  (1) 2011.01.28
우분투 vi editor 세팅  (0) 2010.08.05
우분투 커널 소스 & 컴파일  (0) 2010.08.04
Posted by 초상큼발랄
l

1.시작
vi file vi를 시작하여 지정한 파일 편집
vi -R file 읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집
view file 읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집

2.종료
:wq 데이터를 저장하고 종료
:q! 데이터를 저장하지 않고 종료

3. 시스템이 다운된 후에 되살리기
vi -r 되살릴 수 있는 모든 파일 이름 보여주기
vi -r file vi를 시작하여 지정한 파일 되살리기

4. 디스플레이 제어하기
^L 현재 화면을 다시 디스플레이하기
:set number 내부 줄 번호 디스플레이
:set nonumber 배부 줄 번호 디스플레이 않기

5. 마지막으로 지운 것 복사하기
p 마지막으로 지워진 것을 커서의 뒤/아래에 삽입
P 마지막으로 지워진 것을 커서의 앞/위에 삽입
xp 두 문자를 바꿈
deep 두 단어를 바꿈
ddp 두 줄을 바꿈

6. 패턴 검색
/rexp 지정된 정규 표현식에 대해 앞으로 이동
/ 이전의 패턴에 대해 앞으로 검색을 반복
?rexp 지정된 정규 표현식에 대해 뒤로 이동
? 이전의 패턴에 대해 뒤로 검색을 반복
n /나 ?명령에 대해 같은 방향으로 반복
N /나 ?명령에 대해 반대 방향으로 반복

7. 약어의 사용
:ab short long short를 long에 대한 약어로 변경
:ab 현재 약어 목록을 표시
:una short 약어 short를 표시

8. 줄 길이의 조정
r 문자를 뉴라인으로 변경
J 줄의 결합
:set wm=n 오른쪽으로 n문자 위치에서 자동적으로 줄 나눔

9. 커서 이동
h 커서를 한 칸 왼쪽으로 이동
j 커서를 한 줄 아래로 이동
k 커서를 한 줄 위로 이동
l 커서를 한 칸 오른쪽으로 이동
커서를 한 칸 왼쪽으로 이동
커서를 한 칸 오른쪽으로 이동
- 커서를 이전 줄의 처음으로 이동
+ 커서를 다음 줄의 처음으로 이동
커서를 다음 줄의 처음으로 이동
0 커서를 현재 줄의 맨 앞으로 이동
$ 커서를 현재 줄의 맨 끝으로 이동
^ 커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동
w 커서를 다음 단어의 첫 글자로 이동
e 커서를 다음 단어의 끝 글자로 이동
b 커서를 이전 단어의 첫 글자로 이동
W w와 같음(문장 부호 무시)
E e와 같음(문장 부호 무시)
B b와 같음(문장 부호 무시)
( 다음 문장의 처음으로 이동
) 이전 문장의 처음으로 이동
{ 다음 문단의 처음으로 이동
} 이전 문단의 처음으로 이동
H 커서를 화면 맨 위로 이동
M 커서를 중간으로 이동
L 커서를 맨 아래로 이동

10. 편집 버퍼를 통한 이동
^F 한 화면 아래로 이동
^B 한 화면 위로 이동
n^F n화면 아래로 이동
n^B n화면 위로 이동
^D 반 화면 아래로 이동
^U 반 화면 위로 이동
n^D n줄만큼 아래로 이동
n^U n줄만큼 위로 이동

11. 셸 명령 실행
:!command vi를 중단하고 지정한 셸 명령을 실행
:!! vi를 중단하고 이전의 셸 명령을 실행
:sh vi를 중단하고 셸을 실행
:!csh vi를 중단하고 새로운 C-셸을 실행

12. 패턴에 의한 치환
:s/pattern/replace/ 현재 줄의 치환
:lines/pattern/replace/ 지정한 줄의 치환
:line,lines/pattern/replace/ 지정한 범위의 치환
:%s/pattern/replace/ 모든 줄의 치환
1,$s/aaaaa/bbbbb/g 모든줄의 치환

13. 데이터 읽기
:liner file file의 내용을 지정한 줄 다음에 삽입
:r file file의 내용을 현재의 줄 다음에 삽입
:liner !command command의 결과를 지정한 줄 다음에 삽입
:r !command command의 결과를 현재의 줄 다음에 삽입
:r !look pattern 지정한 pattern으로 시작된 단어 삽입

14. 정규 표현식을 사용하기 위한 특수 기호
. 뉴라인을 제외한 모든 단일 문자와 대응
* 영 또는 그 이상의 선행 문자와 대응
^ 줄의 시작과 대응
$ 줄의 끝과 대응
\< 단어의 시작과 대응
\> 단어의 끝과 대응
[ ] 묶여진 문자중의 하나와 대응
[^ ] 묶여진 문자를 제외한 아무것하고나 대응
\ 이어지는 기호를 문자 그대로 해석

15. 줄 번호
nG 줄번호 n으로 건너뛰기
1G 편집 버퍼의 첫 줄로 건너뛰기
G 편집 버퍼의 마지막 줄로 건너뛰기
:map g lG g가 lG와 같도록 매크로 정의

16. 삽입
set noautoindent set nocindent
i 입력 모드로 전환, 커서 위치 앞에서 삽입
a 입력 모드로 전환, 커서 위치 뒤에서 삽입
I 입력 모드로 전환, 현재 줄의 앞에 삽입
A 입력 모드로 전환, 현재 줄의 끝에 삽입
o 입력 모드로 전환, 현재 줄의 아래에 전개
O 입력 모드로 전환, 현재 줄의 위에 전개

17. 편집하고 있는 파일을 바꾸기
:e file 지정한 파일의 편집
:e! file 지정한 파일의 편집, 자동 점검의 생략

18. 내용 고치기
r 단지 한 글자만 변경(입력 모드로 바뀌지 않음)
R 입력하는 대로 겹쳐 써서 변경
s 삽입에 의해 한 단어의 변경
C 커서의 위치로부터 줄 끝까지 삽입에 의한 변경
cc 전체 줄을 삽입에 의한 변경
S 전체 줄을 삽입에 의한 변경
cmove 커서부터 move까지 삽입에 의해 변경
~ 대,소문자 바꾸기

19. 고치기의 취소 또는 반복
u 편집 버퍼를 수정했던 마지막 명령을 취소
U 현재 줄을 저장
. 편집 버퍼를 수정했던 마지막 명령 반복

20. 문자 삭제
x 커서가 있는 문자 삭제
X 커서의 왼쪽 문자 삭제
D 커서부터 줄의 끝까지 삭제
dd 현재 줄의 전체 삭제
dmove 커서부터 move까지 삭제
dG 커서부터 편집 버퍼의 끝까지 삭제
d1G 커서부터 편집 버퍼의 맨 앞까지 삭제
:lined 지정한 줄의 삭제
:line, lined 지정한 범위의 삭제

21. 여러 줄의 복사와 이동
:linecotarget 지정한 줄을 복사하여 target 줄 밑에 삽입
:line, linecotarget 지정한 범위를 복사하여 target 줄 밑에 삽입
:linemtarget 지정한 줄로 이동하여 target 줄 밑에 삽입
:line, linemtarget 지정한 범위로 이동하여target 줄 밑에 삽입

22. 데이터를 처리하기 위한 셸 명령의 사용
n!!command n번 줄에서 command의 실행
!move command 커서부터 move까지 command 실행
!move fmt 커서부터 move까지 줄들을 형식 맞추기

23. 데이터 저장하기
:w 원래의 파일로 데이터를 저장
:w file 지정한 파일로 데이터를 저장
:w>> file 지정한 파일에 데이터를 추가

출처 : http://www.jointclub.net/about_unix/vi.html


'Education > Linux Kernel' 카테고리의 다른 글

Ubuntu 접속시 느림 현상  (0) 2011.04.28
우분투 커널 컴파일  (0) 2011.03.10
우분투 vi editor 세팅  (0) 2010.08.05
우분투 커널 소스 & 컴파일  (0) 2010.08.04
우분투 설치 후 환경설정  (0) 2010.08.04
Posted by 초상큼발랄
l

OS : Ubuntu 10.04
Android 2.2 API Level 8

1. 먼저 jdk 설치를 해주세요.

$ sudo apt-get install sun-java6-jdk

 

2. Android SDK 파일을 받아옵니다.

http://developer.android.com/sdk/1.6_r1/index.html

 

3. 다음으로 압축을 풀어야 합니다.

$ tar -xzvf android-sdk_r06-linux_86.tgz

 

4. 명령어에 쉽게 접근하기 위해 PATH 설정을 합니다.

$ vi ~/.bashrc

export PATH=${PATH}:/root/android-sdk-linux_86/tools

추가후 저장

$ source ~/.bashrc

 

5. 이클립스에 ADT Plugin 설치하기

 

6. 이클립스 설정하기

Preferences -> Android 클릭 : SDK Location 에 Android 설치한 위치를 연다.

Apply or OK 를 클릭한다.

 

7. Create an AVD(Android Virtual Device) : 안드로이드용 가상 장치(my_avd)를 생성

$./android

Installed Packages -> SDK Location ->Update All or All accept

 

8. Virtual Devices -> New

Name: my_avd

Target: Google APIs(Google Inc.) - API Level 8 선택

SD Card: Size 1024 MiB

Create AVD을 클릭 후 생성된 AVD를 체크한후 Start 버튼을 클릭 -> Launch 클릭

 

'Education > Android' 카테고리의 다른 글

Android 2.2 Froyo 소스  (0) 2010.08.04
Android 환경 설정  (1) 2010.07.20
Android Amulator 설치  (4) 2010.06.22
Android Error - The project cannot be built until build path errors are resolved  (0) 2010.06.22
JDK 설정  (0) 2010.06.21
Posted by 초상큼발랄
l