Operating System Services
- 가장 중요한 것은 system call, application program들이 hardware를 쉽게 사용할 수 있는 인터페이스 제공
- traditional computer에서 사용했음
- 다양한 인터페이스
- system program과 대비되는 개념은 application program
- 좁은 의미의 컴파일 : .c를 .o 즉, 오프젝트 파일로 만드는 일을 수행하는 도구, .c파일 하나당 .o파일 하나가 생김
- .o파일들과 라이브러리를 합쳐서 하나의 실행파일로 만드는 작업을 링킹, 실행파일을 메모리에 올려서 실행해 주는 로더
- 넓은 의미의 컴파일 : 컴파일 + 링킹
trade-off 관계가 있다.
- static linking : 많은 프로그램이 로더에 의해 메모리에 올라갈 때 각각의 프로그램을 모두 메모리에 올림
- 장점 : 성능이 좋음
- 단점 : 메모리 비효율
- dynamic linking : 똑같은 것은 메모리에 하나만 올리고 여러 번 프로그램 실행하면 이미 올려져 있는 곳으로 점프해서 사용, 사용되는 라이브러리로 .dll, .sa&.so(많은 프로그램이 라이브러리를 공유하니까) 이 있다.
- 메모리에 아직 안올라가 있다면 제일 처음 실행하는 프로그램은 실행 속도가 매우 나쁨, 두 번째부터는 좋아짐
- 장점 : 메모리 효율이 좋음,
- 단점 : 성능이 조금 떨어짐
- 디폴트는 dynamic linking
- 가장 핵심은 system call, 운영체제에서 만들어 놓은 read라는 함수를 호출하는 것
- read라는 system call이라는 건 system call 번호로 넘겨준다.
- system call 마다 번호가 매칭이 된다. 그리고 번호에 해당하는 system call handler가 수행된다
- kernel한테 전달을 함. 그렇기 때문에 스택을 통해서 파라미터 패싱을 할 수 없다. 그렇기 때문에 레지스터를 통해서 한다. system call을 했을 때 파라미터를 전달하기 위해 레지스터에 주소를 전달하거나 직접 값을 전달한다.
- printf라는 라이브러리 함수를 호출했지만 실제로 운영체제에는 write()라는 system call을 통해서 서비스를 요청한다.
Operating System Structure
- Monolithic kernel : 운영체제의 모든 기능이 한 곳에 뭉퉁그려져서 개발되어 있는 커널. 전통적인 유닉스, 리눅스가 monolithic kernel 기반해서 만들어짐
- 장점 :
- 단점 : 소프트웨어 엔지니어링(유지보수) 이슈, 성능향상 복잡, 메모리가 많이 필요, 임베디드 시스템 환경에선 힘듦
- Micro(10^-6) kernel : 커널 중에 정말 필요한 기능만 작게 만든 커널, 다른 운영체제의 기능을 application program 형태로 만드는 것, real time OS가 micro kernel 기반으로 만들어짐
- 장점 : 운영체제의 가장 기본적인 기능만 만들어서 소프트웨어 엔지니어링 이슈 해결, 커널의 크기를 확 줄여서 목적에 맞게 임베디드 시스템에 활용할 수 있게 끔 목적에 맞게 만들 수 있다. 필요로 하는 메모리 용량 작음
Monolithic kernel
- 하나를 개선하기 위해선 다른 것들도 다 바꿔야 함(소프트웨어 엔지니어링 이슈)
- 크기가 크니까 메모리가 많이 필요함
Micro kernel
- 제일 필요로 하는 첫 번째 CPU scheduling, 두 번째 Interprocess Communication(IPC)(프로세스 간 통신) 이 두 가지는 필수 그리고 memory management
- application program, file system, device driver 등 기타 운영체제가 가져야 할 추가 기능들을 user mode에다가 application process로 만든다.(사용자가 실행시키는 application program보다는 우선순위가 높음)
- 파일 시스템과 cpu 스케줄링과는 완전히 독립적으로 개발 가능(sw엔지니어링, 유지보수 좋아짐)
- 필요로 하는 메모리 용량 작음
- 모놀리딕과 마이크로 커널의 중간점
- Mach는 micro kernel 기반
- 운영체제는 application이 hardware를 몰라도 쉽게 프로그래밍 할 수 있는 인터페이스(system call) 제공
- application이 실행되는 모드는 user 모드
- 운영체제가 실행되는 모드는 kernel 모드
- application이 운영체제에 서비스를 요청할 때 trap이라고 하는 메커니즘을 통해서 서비스를 요청(sw가 발생시키는 interrupt)
- 운영체제는 컴퓨터 hardware 자원들을 관리하는 소프트웨어
- CPU, I/O, memory 들을 관리한다. CPU관리는 결국 프로세스들을 관리하는 것
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] OS 5장 CPU Scheduling (2) | 2024.04.23 |
---|---|
[운영체제] OS 4장 Threads & Concurrency (1) | 2024.04.20 |
[운영체제] OS 3장 Processes (1) | 2024.04.18 |
[운영체제] OS 1-2장 Introduction (0) | 2024.04.07 |
[운영체제] OS 1-1장 Introduction (0) | 2024.03.24 |