본격적인 운영체제 개념
이전까지는 운영체제를 알기 위한 전반적인 흐름이나 기본적인 지식을 설명하는 내용이었다.
운영체제의 시작을 알리는 프로세스란 도대체 무엇일까?
우리는 Chrome, Kakao Talk와 같은 Application을 프로그램이라고 부른다. 이 녀석들은 HDD나 SSD에 저장되어있다. 바로가기 icon에 대해 '우클릭 - 속성 - 파일위치열기'를 눌러보면 정확한 프로그램을 찾을 수 있다. windows에서는 Chrome.exe와 같은 *.exe 확장자가 붙는데 이것을 프로그램이라고 한다.
앞에서 프로세스도 *.exe라고 다룬적이 있다. 맞지만 조금 다르다. exe 파일에는 코드, 데이터, 스택, 힙 공간이 목적 코드로 작성되어있는데 이 실행파일을 실행했을 경우 메모리에 적재되는데 실행 상태라고 하며 프로세스(Process)라고 한다.
- 프로세스는 서로 독립적인 메모리 공간을 가진다.
- 프로세스의 모든 정보는 커널이 관리한다.
- 커널은 각 프로세스의 메모리 위치와 크기 정보를 관리한다. (PCB)
- 커널은 프로세스마다 고유한 번호를 할당한다. (PID)
- 커널은 프로세스의 생명 주기를 관리한다.
- 프로세스는 running, wait, ready, terminate 상태의 생명 주기를 가진다.
- 같은 프로세스가 여러번 실행됐을 경우를 다중 인스턴스라고 한다. (각 각 별개의 프로세스이다.)
프로세스의 공간
이것도 앞에서 다루었던 내용이다.
프로세스는 코드, 데이터, 힙, 스택 영역으로 나뉜다.
코드 영역에는 우리가 작성한 코드들이 함수단위로 있다. 각 주소에 함수가 맞물려 있다.
데이터 영역에는 전역 변수에 대한 내용이 있다. 각 주소에 변수가 맞물려 있다.
힙 영역에는 코드 중간 런타임에 동적으로 할당 받아야하는 공간이 주어진다.
스택 영역에는 코드 영역의 함수가 실행 될 때, 정보가 누적될 공간이 주어진다.
컴퓨터 구조나 시스템 프로그래밍을 하게 되면 실제 심볼테이블을 이용해 각 영역에서 어떤 처리가 발생하는지 알 수 있다.
위의 내용은 사용자 공간에 대한 내용이다. 실제 프로세스는 사용자 공간뿐만 아니라 커널 공간에 대한 영역까지 할당되어있다. 즉, 두 부분으로 나누어져있다.
사용자 공간에서 시스템 호출을 하게되면 커널 공간을 사용하게 되는데 운영체제에서 프로세스의 사용자 공간은 독립되어있고 커널 공간은 모든 프로세스가 공유하고 있다.
모든 프로세스의 사용자 공간은 상대적인 관점이고 가상 주소이다. 모두 0번지부터 공간이 할당되는데 이것을 가상 개념으로 보고 실제, 운영체제에 의해 가상주소가 실 메모리 주소에 매핑되어 연속적으로 할당받게 된다.
'CS > 운영체제' 카테고리의 다른 글
9. 프로세스 계층 구조 (1) | 2024.04.21 |
---|---|
8. 프로세스 제어 블록 (PCB, Process Control Block) (0) | 2024.04.21 |
6. 커널 (Kernal) (0) | 2024.04.21 |
5. 운영체제의 역할 (1) | 2024.04.21 |
4. 시분할 다중프로그래밍(Time Sharing Multi-Programming) OS (0) | 2024.04.21 |