#2-2. System Structure & Program Execution


복습))

 instruction은 보통 4byte 이다.

 그렇기 때문에 순차적일때 pc(program counter)는 4가 증가한다.

 But, 항상 일정한건 아니다!(if, continue etc)

 

 

* 동기식 입출력(synchronous I/O)

 : I/O요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램으로 넘어감.

  (즉, 완료가 되어야 다음일을 할 수 있다.)


* 비동기식 입출력(asynchronous I/O)

 : I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감.

  (안끈나도 다음작업이 가능하다.)


cf> I/O는 커널을 통해서만 사용이 가능하다.


 

* DMA (Direct Memory Access)

 : 메모리에 접근하는 장치

 

 v. 작은일들은 바로 cpu에 interrupt 거는게 아니라 DMA를 거친다.

(byte 단위가 아니라 buffer에다 저장해뒀다가 블록 단위로 전송)

즉, CPU가 효율적으로 일할 수 있게 해주는것.



* 저장장치 계층 구조

 

 

 

v. 위로 올라갈 수록 

  - 스피드 빠르고

  - 비싸고(그래서 용량이 적다.)

  - 휘발성이다.

 v. cpu가 직접 접근할수 있는 것이 Primary구간(초록)


cf> cpu가 직접 접근하기 위해선 byte 단위로 접근이 가능해야하는데,

 DRAM 메모리 같은경우 byte단위로 주소를 매겨서 접근할수 있다.

 반대로, 하드디스크 경우는 섹터 단위로 주소를 매긴다.


 - 캐시메모리 : 속도 차이를 완충해주는 역할

그러나 메모리가 main memory보다 작아서 당장 필요한거만 저장해서 쓴다. 이것을 caching 이라고 부른다.(보통 캐싱은 재사용을 목적으로 한다.)

 

 - register : 이곳을 통해 instruction을 읽어들인다.


** 프로그램이 어떻게해서 실행이 되는가?

 


실행파일 형태로 하드디스크에 저장 되있고, 실행시키게 되면 메모리에 올라가서 프로세스가 된다. 그렇게 실행이된다.

정확하게는 물리적인 메모리에 바로 올라가는것이 아니라 virtual memory를 거치게 된다.


모든 프로그램이 독자적인 주소 공간(virtual memory)을 가지고 있다.


이것이 통째로 물리적인 메모리에 올려놓는게 아니라 당장 필요한것은 물리적인 메모리에 올려놓고, 당장필요하지 않은것은 swap area에 내려 놓는다.



* 메모리 주소변환 계층

 논리적인 메모리 주소 -> 물리적인 주소로 변환되는것

 (이부분은 뒤에서 자세히..)

 


 

* 커널 주소 공간의 내용

 

뒤에 자세히 하겠다.. 생김새 정도만 살펴 보자


 

cf> 어떤 프로그램이던 함수형 언어로 짜여 있다.

 

 


 

* 함수

커널함수(시스템 콜) Vs 사용자정의 함수, 라이브러리 함수

-------------------------------------------------------------------

커널안에 있다               사용자 프로세스 코드 영역에 들어있다


=> 즉, 사용자 프로세스가 커널함수를 사용하고 싶다면 스스템콜을 사용하여 interrupt가 발생시켜 cpu제어권을 os에게 넘겨보내어 실행을 하게 된다.

 

[실행 예시]

 



'cs > os' 카테고리의 다른 글

#3-3. Thread  (0) 2017.12.29
#3-2. Process  (0) 2017.12.27
#3-1. Process  (0) 2017.12.27
#2-1. System Structure & Program Execution  (0) 2017.12.24
# Thread  (0) 2017.12.17

+ Recent posts