동기식 입출력(synchronous I/O)
- I/O 요청후 입출력이 완료 된 후에야 제어가 사용자 프로그램으로 넘어감
- 구현 방법1
- I/O가 끝날때 까지 CPU를 낭비시킴
- 매 시점 마다 I/O만 일어날 수 있다.
- 구현 방법2
- I/O가 완료 될때 까지 프로그램에서 CPU를 빼았음
- I/O처리를 기다리는 줄에 프로그램 줄을 세움
- 다른 프로그램에게 CPU를 줌
비동기식 입출력(asynchronous I/O)
- I/O 요청후 입출력이 완료를 기다리지 않고 제어가 사용자 프로그램으로 넘어감
두 경우 모두 종료 될 때 인터럽트를 통해 알린다.
DMA(Direct Memory Access)
- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해서 사용한다.
- CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block단위로 직접 전송한다.
- 바이트 단위가 아니라 block단위로 인터럽트를 발생시킨다.
일반 적인 I/O
메모리에 I/O 주소값을 할당해서 I/O에 접근할수 있도록 하는 방식
저장장치의 계층구조
-위로 갈 수록 비싸고 ,내려갈 수록 싸다.
-위는 휘발성 아래는 주로 비휘발성이다.
- 위는 CPU가 직접 접근하려 처리, 아래는 직접 접근 할 수 없다.
캐싱:빠른 스토리지로 정보를 옮겨서 쓰는 것
프로그램의 실행(메모리 load)
전체 과정
파일 시스템에 있는 실행 파일 >메모리로 옮겨서 실행한다.
상세 과정
가상 공간에 프로그램 만의 독자적인 주소 생성 > 필요한 코드나 필요한 것만 >물리적인 메모리에 옮겨서 실행
(불필요한 것은 Swap Area로 옮겨짐)
커널 주소 공간 내용
Code
-커널내의 필요한 코드
data
- 프로세스 관리
-CPU,메모리등을 자료구조의 형태로 관리
Stack
- 함수를 호출하고 리턴을 위한 Stack
사용자 프로그램이 사용하는 함수
커널 함수 호출시는 인터럽트 라인을 셋팅해 시스템 콜을 통해서만 호출이 가능하다.
CPU의 프로그램 실행 루트
'Tech.log > 운영체제' 카테고리의 다른 글
[Thread-safe] (0) | 2021.05.22 |
---|---|
[프로세스와 스레드의 차이] (0) | 2021.05.19 |
[시스템 구조와 프로그램의 실행] (0) | 2021.04.28 |
[운영체제란 ?] (0) | 2021.04.28 |
댓글