프로그램의 실행 (메모리 load)
프로그램은 File System에 실행파일 형태로 저장 되어있고, 이를 실행시키면 그 프로그램이 메모리에 올라가서 프로세스(Process)가 됨.
메모리에는 운영체제의 Kernel이 기본적으로 올라가있고, 위의 사용자 프로그램들은 실행을 시켰을 때 메모리에 올라가서 프로세스가 됨.
위의 두 과정 중간에 Virtual memory 존재함
프로그램이 실행될 때 그 프로그램만의 독자적인 주소공간(Address space)이 만들어 짐 => Vertual Memory
Vertual Memory는 메모리에 실제로 존재하는 것이 아니라 머릿속에 존재해서(논리적 주소) 당장 필요한 부분은 물리적인 메모리에 올라가게 되고, 그렇지 않은 메모리는 Disk의 Swap area에 내려가 있게 됨.
Vertual Memory에는 0번지 부터 시작하는 각 프로세스들의 주소가 매겨지는 것이고, Physical Memory에는 쭉 하나의 메모리로 존재하기 때문에 두 다른 주소를 변환해주는 Address Translation(주소변환) 가 필요
- Vertual Memory는 code, data, stack으로 구성
- code : 실행파일에 있던 코드가 올라가는 부분 -> 실제로 cpu에서 사용하는 기계어들이 위치함.
- data : 데이터가 보관되는 부분 -> 프로그램이 실행되다가 메모리 부분을 사용할 때 (배열을 잡아서 쓰거나, 변수를 잡아서 쓰거나 ... => 전역변수 등 프로그램이 시작해서 끝날 때까지 남아있는 data 들 )
- stack : 함수를 호출과 return에 관련돈 정보를 쌓아놓음
커널의 주소 공간의 내용
- code 영역
- 시스템 안에 있는 자원을 효율적으로 관리함.
- 사용자에게 편리한 인터페이스를 제공
- 운영체제가 언제 호출? 인터럽트 발생했을 때 -> 인터럽트 들어왔을 때 뭘 처리해야 하는지
-> 이를 위한 코드가 운영체제에 함수 형태로 들어있어야 함.
- 특권 명령 요청 되었을 때 -> 대신 해달라고 요청받는 시스템 콜
- data 영역 (PCB)
- 모든 하드웨어들을 관리하기 위한 자료구조
- 모든 프로세스들을 관리하기 위한 자료구조
- stack 영역
- 각각의 프로그램에 의해 운영체제가 호출되기 때문에 누구의 call에 의해 운영체제가 실행 되는지에 따라서 Kernel의 stack은 각 프로세스마다 별도로 제공
사용자 프로그램이 사용하는 함수
- 함수(function)
- 사용자 정의 함수
- 자신의 프로그램에서 정의한 함수
- 라이브러리 함수
- 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
- 자신의 프로그램의 실행 파일에 포함되어 있다.
- 커널 함수
- 운영체제 프로그램의 함수
- 커널 함수의 호출 = 시스템 콜
- 사용자 정의 함수
프로그램의 실행
- 사용자 정의 함수나 라이브러리 함수를 실행 할 때는 내 주소공간에 있는 코드가 user mode에서 실행됨
- 반면 system call을 부르면 cpu 제어권이 운영체제로 넘어가서 kernel 모드의 주소 공간에서 실행됨
'이론공부 > 운영체제' 카테고리의 다른 글
03. 프로세스 관리 (0) | 2022.05.18 |
---|---|
[운영 체제] 02. 컴퓨터 시스템의 구조-2 (0) | 2022.05.01 |
[운영체제] 02. 컴퓨터 시스템의 구조 (0) | 2022.04.28 |
[운영체제] 01. 운영체제 개요 (0) | 2022.04.28 |
[운영체제] 01. 운영체제란? (0) | 2022.04.25 |
댓글