프로그램의 실행, Program Execution
Last updated
Last updated
구분 | 동기식 입출력(synchronous I/O) | 비동기식 입출력(asynchronous I/O) |
---|---|---|
동작방식 | I/O 요청 후, 입출력 작업이 완료되고나서야 제어가 사용자 프로그램으로 넘어간다. | I/O 가 시작된 후, 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어간다. |
구현방법 1 | I/O 가 끝날때까지 CPU를 낭비시킨다. → 매 시점 하나의 I/O만 일어날 수 있음 | |
구현방법 2 | I/O가 완료될 때까지 해당 프로그램에게서 CPU 를 빼앗음 → I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 → 다른 프로그램에 CPU를 줌 | |
공통점 | 두 경우 모두, I/O가 종료되었다는 것은 인터럽트를 이용해서 알려준다. | |
예시 | 보통 데이터를 삽입하는 write 의 경우, 비동기식으로 진행된다. |
구분 | special instruction | memory mapped I/O |
---|---|---|
특징 | 메인 메모리에 접근하는 방법과 별도로 I/O 디바이스에 접근하기 위한 주소와 명령어가 별도로 존재한다. | 메인 메모리에 접근하는 것과 같은 방식으로 I/O디바이스에도 주소와 명령어로 접근한다. |
구분 | Primary(Executable) | Secondary |
---|---|---|
CPU 접근 | CPU에서 직접 접근 가능 | CPU에서 접근 불가 |
접근 단위 | 바이트 단위로 접근 | 섹터 단위로 접근 |
속도 | 빠르다 | 느리다 |
휘발성 | 컴퓨터 전원이 꺼지면 날라간다 → 휘발성이 높다 | 컴퓨터 전원과 상관없이 오래 남아있는다. |
비용 | 비싸다 | 저렴하다 |
Cashing
프로그램이 실행되면 각 실행파일별로 별도의 virtual memory 공간이 생기며 각각의 프로세스는 해당 공간 내에서 저장되고 조회된다.
physical memory 영역에서는 virtual memory 의 모든 것을 저장하지 않는다. 메모리가 낭비될 수 있기 때문에 최대한의 효율을 위해 현재 실행되고 있는 부분의 데이터만 저장한다.
당장 사용하지 않는 데이터는 메인 메모리의 연장영역인 swap area 에 저장해둔다.
사용자 정의 함수
자신의 프로그램에서 정의한 함수
라이브러리 함수
자신의 프로그램에서 정의하지 않고 가져다가 쓴 함수
자신의 프로그램의 실행파일에 포함되어 있다.
커널 함수
운영체제 프로그램의 함수
커널 함수의 호출 = 시스템콜