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