[ 프로그램의 실행 ]
시스템 콜을 통해 커널 함수를 호출한다. → 그러면 커널 모드가 된다.
- 유저모드와 커널 모드가 반복된다
os는 block 단위로 읽어들인다. (timer 시간)
[ 저장장치 계층구조 ]
primary (Executable)
[Registers]
CPU안에 있음
공간은 적지만 빠른 속도로 처리를 한다.
[1 Cache Memory]
ISA에 포함되지 않을 수도 있고 포함될 수도 있다
메모리에서 레지스터로 올리는데 많은 내용을 올릴 때 시간이 많이 걸릴 것이다. 하지만 캐시에 저장했다가 다시 사용하고 싶으면 메인 메모리에서 레지스터로 바로 가는 것이 아니라 캐시에 저장된 값을 바로 사용하는 것이다. → 속도가 더 빨라진다.
메인메모리 보다는 빠르고 레지스터보다는 느리다. 버퍼같은 중간자 역할을 한다고 볼 수 있다.
[L2 cache Memory]
[메인 메모리]
Secondary = 디스크 저장장치
[flash memory]
SSD
하드 디스크에 비해서 속도가 빠르다.
만약 하드디스크에 os가 있는 것이 아니라 flash 메모리에 Os가 있다면 훨씬 더 빠를 것이다.
[Hard disk]
⇒ primary가 secondary에 비해 상대적으로 빠르다.
- 저장 장치에 계층 구조를 두는 이유는 속도와 비용때문이다.휘발성(컴퓨터를 킬 때부터 끌때까지 유지하는 것) primary는 컴터를 갑자기 끄면 휘발성으로 날아감 하지만 secondary 부분은 날아가지 않음 (계속 보유)
- 위로 올라갈수록 속도가 빠르고 비용이 비싸다 .
[ 메모리 로드 ]
[파일 시스템]
파일 시스템 안에 실행파일 중 하나 a.out을 입력하면 프로세스가 되어 메모리에 로드가 되어 실행이 된다.
보통은 하나의 프로그램이 하나의 프로세스를 동작시킨다.
SSD(256기가)인데 이에 비해 메모리는 8기가 뿐이므로 너무 적다→ 가상 메모리 공간 만들기
여기에 가상 메모리 공간 + Swap area가 있다.
[메모리]
메모리에는 항상 커널이 떠있다. 처음에 컴퓨터를 부팅했을 때 커널이 메모리에 로딩이 되어 시스템 콜이 발생할 때 커널이 발생한다.
해당 실행파일에 대해서 로딩된 프로세스들이 있다.
물리적 메모리의 공간은 작기 때문에 “가상 메모리”를 사용한다.
실행 파일 A를 사용하게 되면 프로세스 A에 대한 주소 공간이 생긴다 [ stack, data, code ]
code = 각각의 instruction(기계어 값들)
data = 전역 변수와 같은 변수들이 있다.
stack = 함수 호출의 부분으로 인해 생기는 것이다. (함수를 호출하게 되면 각각의 주소값들이 필요하다 그리고 return 되는 값들이 있다. 이를 저장해놓은 부분을 스택이라고 한다)
- 그리고 물리적 메모리에 주소 공간을 다 올리는 것이 아니라 이 중 일부만 올리는 것이다. (일정 부분만 올리는 것이다)
Swap area = 가상 메모리 기법
물리적 메모리 공간에 주소 공간의 일부를 올려놓고 다 쓰면 버리는 것이 아니라 나중에 쓸일을 생각해서 Swap area에 올려놓는다.
프로그램이 사용하는 함수
함수(function)
(1) 사용자 정의 함수
• 자신의 프로그램에서 정의한 함수
(2) 라이브러리 함수
• 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
• 자신의 프로그램의 실행 파일에 이미 포함되어 있다 (ex) printf
(1) , (2) 는 프로세스 A의 Address space를 갖는다.
[stack, data, code]
(사용자 정의 함수 하나가 하나의 프로세스가 될 수 있고 여러 개의 사용자 정의 함수가 하나의 프로세스가 될 수 있다)
(3) 커널 함수
• 운영체제 프로그램의 함수
• 커널 함수의 호출 = 시스템 콜
printf 함수를 수행하려면 모니터에 출력이 가능해야 하는데 커널 함수를 호출해야 한다. printf 안을 보면 실제로 시스템 콜이 있다.
(3)은 커널 Address space를 갖는다. [stack, data, code]
'CS > 컴퓨터 시스템' 카테고리의 다른 글
Chap 7_2. 프로세스 (0) | 2022.08.20 |
---|---|
Chap 7. 프로세스_1 (0) | 2022.06.24 |
Chap 5. 컴퓨터 시스템 구조 (0) | 2022.05.19 |
Chap 4. 운영체제란? (0) | 2022.05.18 |
Chap 3 - 3. static 라이브러리와 shared 라이브러리 (0) | 2022.05.14 |