프로세스는 트리의 구조로 생성된다.
ex) 그래픽 쉘에서 크롬을 클릭
➜ 쉘 프로그램의 자식 프로세스로 크롬 프로세스 실행
➜ 크롬에서 다른 프로그램 실행
➜ 크롬의 자식 프로세스로 실행됨
파일은 트리 구조로 구성된다.
디렉토리 또한 파일이다.
디렉토리와 파일은 구조가 똑같다.
디렉토리에는 하위 파일들의 정보가 테이블 형태로 있을 뿐이다.
System Call은 사용자 프로세스가 운영 체제의 커널에 서비스를 요청하는 방법 중 하나이다.
프로세스 관리를 위한 System Calls |
---|
pid = fork() |
pid = waitpid(pid, &statloc, options) |
s = execve(name, argv, environp) |
exit(status) |
메모리 관리를 위한 System Calls |
---|
fd = open(file, how) |
s = close(fd) |
n = read(fd, buffer, nbytes) |
n = write(fd, buffer, nbytes) |
position = lseek(fd, offset, whence) |
System Call과 Interrupt가 헷갈릴 경우
Virtual Machine이란, 컴퓨터 하나를 그대로 Ammulate한 뒤에 운영체제를 설치하는 것이다.
각각의 가상머신마다 CMS 운영체제를 올리고 사용하게 하면, 다중 사용자 지원할 수 있다.
네이티브 Hypervisor의 경우, Windows, Linux는 User Mode이고 Hypervisor(OS)는 kernel Mode이다.
가장 초기에 개발된 운영체제 아키텍쳐
THE 운영체제에서 사용된 아키텍쳐
Layer | Function |
---|---|
5 | 사용자 프로그램 Operator |
4 | User programs |
3 | I/O 관리 |
2 | Operator-process communication |
1 | Memory & Drum 관리 |
0 | Processor allocation & multiprogramming |
운영체제가 너무 방대하니, 모듈 단위로 쪼개서 관리하는 아키텍쳐
기타 운영체제의 기능은 프로그램으로 만들어서 프로세스로 돌린다.
핵심 기능(interrupt, scheduling, IPC)은 Microkernel로 만든다.
운영체제의 유지 보수가 쉬워진다.
ex) 운영체제 기능 중에서 파일 시스템만 바꾸고 싶다?
➜ 파일 시스템만 바꿔서 다시 실행시키면 된다.
모든 요청을 메시지로 송수신 해야한다.
∴ 기존 Monolithic에 비해서 성능이 떨어진다.
분산 운영체제 아키텍쳐
마이크로커널이 발전한 형태이다.
마이크로커널은 하나의 컴퓨터에서 작동하지만, Client Server는 운영체제의 기능을 각각의 컴퓨터에서 작동시킨다.
각 기계마다 제공해주는 운영체제의 서비스가 다르다.
각 컴퓨터는 네트워크로 연결되어 있다.
특권 명령이란?
I/O 명령
Processor 상태 조정 명령
특권 메모리 영역에 접근하는 명령