기법과 정책: 기법으로 부터 정책을 분리해야 한다.
mechanism(기법): 어떻게 할 것인가를 결정
policies(정책): 무엇을 할 것인가를 결정
시스템 콜 : 호출 가능한 함수 형태
- fork, exit, waitpid, execve(새 프로그램으로 메모리 공간 덮어 씌움)
- open, close, read, write, stat(파일정보)
- chdir(작업 디렉토리 변경), mkdir, rmdir
- mount, unmount
자원: 프로그램 실행에 필요한 요소, 데이터, 부품
SMP(symmetric multiprocessng): 시스템 버스를 통해 물리 메모리 공유
NUMA(non-uniform memory access): 모든 CPU가 공유 시스템 연결로 연결. 모든 CPU가 로컬 메모리 보유
Clustered System: 약결합, 높은 가용성, 우아한 성능 저하, 결합 허용 시스템, 비대칭형, 대칭형, 네트워크로 다수의 컴퓨터 시스템 연결
Multiprograming: CPU가 항상 한 개는 실행할 수 있도록 구성
프로세스: 실행 중인 프로그램
다중 태스킹: multiprograming의 논리적 확장, 빠른 전환율로 여러 프로세스를 동시에 실행하는 것으로 착각
timer: 지정 시간 후 인터럽트 하도록 설정
가변 타이머: fixed-rate clock과 계수기로 구현. 사용자에게 제어 양도 전 타이머 설정 확인
API(Application Programming Interface)
ABI(application binary interface)
Monolithic structure: 커널의 모든 기능을 단일 주소 공간에 실행되는 정적 이진 파일에 넣는 것. 단순하고 빠르지만(시스템 콜 인터페이스의 오버헤드가 거의 없다.) 구현 및 확장이 어렵다.
Layered Approach: OS를 여러 층으로 나눈다. 최하위 츠은 HW. 최상위 층은 사용자 인터페이스이다. 각 층은 자신보다 하위 수준에 의해 제공되는 연산만 사용해 구현한다. 각 층 정보 은닉. 층이 많으면 오버헤드도 많다.
Micro kernels: 중요하지 않은 구성요소를 별도의 주소공간에 존재하는 사용자 수준 프로그램으로 구현. 확장이 쉽다. 시스템 기능 오버헤드가 크다.
Modules: LKM(loadable kernel modules)기법 사용. 부팅 혹은 실행 중에 부가적인 서비스들을 모듈을 통해 링크. 보호된 인터페이스. 모듈에서 임의의 다른 모듈 호출. 메시지 전달 필요 X
Hybrid system: Linux(모놀리식+모듈), Windows(모놀리식+모듈+마이크로 커널)
부트 스트랩 프로그램
전원을 켤때 가장 먼저 실행되는 프로그램
전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM)에 저장
부팅: 커널을 적재하여 컴퓨터를 시작하는 과정
부트스트랩 프로그램 또느 부트로더로 불리는 작은 코드가 커널의 위치를 찾는다.
커널이 메모리에 적재되고 시작된다.
커널은 하드웨어를 초기화 한다.
루트 파일 시스템이 마운트 된다.
Bios라는 소형 부트로더가 부트 블록이라는 두 번째 부트로더 적재
UEFI(unified extensible firmware interface)로 대체. 완전한 부팅관리자. 빠르다.
Debugging: 병목현상 제거. 성능 조정, 로그 파일, 코어(메모리)덤프, 크래시(커널 장애), 크래시 덤프