본문 바로가기

CS/컴퓨터 시스템

Chap 6. 프로그램 실행

[ 프로그램의 실행 ]

시스템 콜을 통해 커널 함수를 호출한다. → 그러면 커널 모드가 된다. 

  • 유저모드와 커널 모드가 반복된다

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