2020년 7월 1일 수요일

OS 정리 - 2

System Call

- API 로 포장됨 . 이유는 실재 System Call 이 복잡하고, 한번 포장되니까 내부의 내용이 변경되도 API 로 작성도니 소스는 바꿀 필요 없음. 즉 호완성이 좋음.

- 이때 System Call Interface 가 User Mode 에서 Kernal Mode 로 가 System Call 을 실행하게 함.

- 인수를 넘겨주는 방법은 크게 3가지다. 1. 레지스터에 인자를 넘겨줄 수 있다. 하지만 레지스터 수보다 파라미터가 많으면 적용할 수 없다. 이 문제는 두가지 방법으로 해소할 수 있다. 2. 파라미터가 블럭에 저장이 되어 이 주소를 레지스터에 넘겨준다. 3. 혹은 스택에 넣는다.

- Linux 는 POSIX API 임

System Program

- 프로그램 개발자나 사용자에게 실질적인 환경을 제공해주는 프로그램

- System Call 이 아니라 System Program 으로 우리는 운영체제를 느낄 수 있음

- 데몬, Services 로 알려져있으며, 그 자체로 뭔가를 하지 않고 디스크 체킹, 프로세스 스케듈링, 에러 체킹 같은 일을 함.

Operating System Design

- Policy 와 Mechanism 을 구별해야함. 어떤 기능을 추가할 것인지, 그리고 그 기능을 어떻게 쓸 것인지.

- Simple Design : 모듈로 구분 안됨. 유지보수가 어렵지만 대개 빠름

- Layered Approach : 하드웨어 레이어에서 시작해서 오직 그 전단계 레이어로 다음단계를 구성함. 이러면 유지보수가 쉬워짐. 대신 레이어 층을 잡기도 애매하고 느려짐.

- Microkernal System Structure : 최소한만 커널이 하고 나머진 UserSpace 가 처리함. 유저 모듈 사이를 Kernal 에서 메시지로 처리해줌. 근데 오버헤딩이 너무 큼. 대신 작아서 유지보수, 보안, 포팅이 쉬움.

- 대신 core Kernal 에 덧붙일 수 있는 모듈을 만들어서 하기도 함.

댓글 없음:

댓글 쓰기

List