데드락의 조건
1. hold & wait
2. no preemption
3. mutial exclusion
4. circular wait
- 4가지 조건이 다 걸리면 무조건 발생, 3개면 될수도 말수도 있음.


동기화
- 여러 태스크가 동시에 수행 중일 때 각 태스크 간의 수행 순서를 주는 것.
- 공유자원(shared resource)에 대한 경쟁상태(race condition) 해결
- 방법 : 상호배제(mutual exclusion)
        - 한 시점에 오작 한 태스크만 공유자원 접근 허용.
        - 임계영역 : 공유자원을 접근하려는 프로그램 일부분.


메모리 관리정책 3가지
- 반입정책 (Fetch) : 언제 프로그램을 메모리로 가져올 것인가?
        - 요구 반입 정책, 선반입 정책.
- 배치정책 (Placement) : 프로그램을 메모리 어디에 위치시킬 것인가?
        - 최초적합,(first) 최적적합(best), 최악적합(worst)
- 교체정책 (Replacement) : 메모리 공간이 부족할 때 어떤 프로그램을 메모리에서 교체시킬 것인가?
        - 시간적 지역성 : 방금 참조된게 또 하겠지...
                                예) stack, tree traverse, counting variable
        - 공간적 지역성 : 1번 이후에 2번이 하겠지...
                                예) array, sequential code, file refernce
        - 정책 : LRU (가장효율적), LFU, MRU, NUR, Working Set.. 등


문맥 (Context)
- 커널이 관리하는 테스크의 자원과 수행환경 집합


시그널 (Signal)
- 비동기적인 사건의 발생을 태스크에 알리는 매커니즘.
        - 태스크 종료 : exit, abort
        - 태스크 무시 : ignore
        - 태스트 수행중지 : stop
        - 사용자 수준 시그널 처리함수 (user level catch function)


인터럽트 (Interrupt)
- 외부인터럽트 : CPU 외부에서 CPU선을 통해서 신호가 옴
                             (외부장치들, PIC:Programable Interrupt Control)
                             32~255번 : 인터럽트 발생시 배열 idt_table을 참조함
- 내부인터럽트 = 트랩 :
        - fault : 처리후 그 명령어를 다시 수행 (원래 주소)
        - trap : 처리 후 그 다음 명령어를 수행 (다음 주소)
        - abort : 처리 후 데드락이 걸리면 외부로 나가서 이놈을 죽인다. (복귀 X)


저널링 기법
- 파일 생성, 수정, 쓰기, 이름 변경 등 파일 시스템 변경 시 변경사항을 log 영역에 미리 기록.
- 파일 시스템 변경시 오류가 발생하면 log 영역을 보고 파일 시스템 복구.
- Fast recovery 가능.
예) NT File System, Journaling File System(UNIX),


테스크 (Task)
- 수행중인 프로그램(program instance), 스케줄링의 대상.
- 사용자의 요청을 대리하며 시스템 자원을 두고 서로 경쟁한다.
- 자신의 메모리 공간(코드, 변수, 스택)과 하드웨어 레지스터를 갖는다.
- 테스크 계층구조를 갖는다.
- 상태와 전이를 갖는다.
- 스케줄링 단위가 되는 모든 테스크는 자신만의 프로세스 디스크립터를 가져야 한다.


페이징 시스템
장점

- 테크스에게 물리적 메모리 이상의 공간 제공 (32bit = 4G)
- 요구 페이징 지원.
- 메모리 배치 정책이 불필요.
- 테스크간 메모리 공간 보호.
- 테스크간 페이지 공유 가능 (효율적인 공유 메모리 지원)
- 테스크의 빠른 생성 지원.

단점
- 주소변환과정 필요 : 페이지 테이블을 거쳐서 접근.
- TLB (Translation Lookahead Buffer) : 가상주소 공간과 물리주소 강간 캐싱해 주는 것
                                                                Context switching 시에 flush가 일어남
- HAT (Hardware Address Translation) = MMU
- 변환 테이블 관리 필요


프로세스 & 쓰레드
- 프로세스 : 실행 상태에 있는 프로그램의 인스턴스. 자원 소유권의 단위.
- 쓰레드 : 디스패칭의 단위. 실행흐름. 수행의 단위.


Page Table Management
- PGD (Page Global Directory)
- PMD (Page Middle Directory)
- PTE (Page Table Entry)


System V IPC
- 메세지 큐 (message queue)
- 공유메모리 (shared memory)
- 세마포어 (semaphore)
- 3가지 유형의 공통점
        - IPC 식별자 사용 : IPC 객체에 접근하기 위해서는 식별자 필요
        - Key를 identifier로 매핑 (ftok) : 통신을 하려는 프로세스는 키를 공유
http://www.coffeenix.net/doc/lpg/lpg_6_4.html


VFS (Virtual File System)
- 표준 UNIX FS이 제공하는 모든 시스템 콜을 처리하는 Kernel S/W 계층
- 여러 종류의 FS에 대해 공통 Interface를 제공
- VFS의 객체유형
        - 슈퍼블록 객체 : 마운트된 FS을 나타내는 정보저장.
                                사용가능한 inode와 디스크블록 정보관리
        - 아이노드 객체 : inode 번호로 FS내에서 유일하게 식별됨
        - 파일 객체 : 각 process 가 file에 접근하는 동안 커널 메모리에만 존재
        - 디엔트리 객체 : 디렉토리 항목과 이에 대응하는 파일의 연결에 대한 정보를 저장
                                가장 최근에 사용한 디엔트리 객체를 캐시

+ Recent posts