1. System call: 운영체제의 함수를 호출하는 것
2. 입출력 (동기/비동기)
가. 동기식 입출력(Synchronous I/O): I/O 장치의 결과를 보고, 사용자 프로그램에 넘어감
1) 구현법1: I/O가 끝날 때까지 CPU 낭비시킴 (매 시점 하나의 I/O만 일어남)
-> CPU와 I/O 둘 다 낭비
2) 구현법2: I/O 요청을 한 후, CPU는 다른 프로세스에 넘겨줌
나. 비동기식 입출력(Asynchronous I/O): I/O 장치의 결과를 기다리지 않고 사용자 프로그램에 넘어감
-> 두 가지 모두, I/O의 완료는 Interrupt로 알려줌
*순서) 사용자 -> 커널에 I/O 요청 -> 사용자에게 바로 다시 넘어오냐, 결과를 보고 넘어오냐
3. DMA(Direct Memory Access)
가. 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
나. CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
다. 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴
4. 입출력 명령어
가. 일반적인 I/O: 메모리만 접근 하는 instruction과 I/O 장치에만 접근하는 instruction이 따로 존재
나. Memory Mapped I/O: I/O 장치도 메모리에 연장선으로 취급하여 같이 접근하는 방식
5. 저장장치 계층: 레지스터 -> 캐시 메모리 -> 메인메모리 -> 마그네틱 디스크 -> 광학 디스크 -> 마그네틱 테이프
*캐싱: 더 빠른 장치로 정보를 복사해가는 것
6. 프로그램의 실행
가. 순서
1) 파일 시스템에 실행파일로 저장됨
2) 가상 메모리를 거침
가) Code: 프로그램의 코드
나) Data: 전역 변수 등
다) Stack: 코드 상의 함수 등 호출
3) 물리 메모리에 올려서 실행
나. disk
1) File system: 전원이 나가도 저장
2) Swap area: 메모리의 연장 공간, 전원이 나가면 의미가 없어짐
다. 커널 주소 공간 내용
1) code: 시스템콜, 인터럽트 처리 코드(함수형태)
2) data: 운영체제가 사용하는 자료구조 등
3) stack: 프로세스의 커널 스택
7. 함수
가. 사용자 정의 함수: 자신이 프로그램에서 정의한 함수
나. 라이브러리 함수: 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
다. 커널 함수: 운영체제 프로그램의 함수, 커널 함수의 호출 = 시스템 콜
(사용자 프로그램에서 커널영역에 접근이 불가하기 때문에 존재)
8. 프로그램의 실행
가. 프로그램시작 -> User mode(A의 주소 공간) -> 유저 정의 함수 호출
나. 시스템 콜 -> Kernel mode (kernel의 주소 공간)
다. 리턴 -> user mode (A의 주소 공간) -> 라이브러리 함수 호출
라. 시스템 콜 -> kernel mode (kerneml의 주소 공간)
'Studying > Operating System' 카테고리의 다른 글
04. Process Management (1/2) (0) | 2018.05.20 |
---|---|
03. Process (2/3), (3/3) (0) | 2018.05.20 |
03. Process (1/3) (0) | 2018.05.19 |
02. System Structure & Program Execution (1/2) (0) | 2018.05.16 |
01. 운영체제 - 도입 (0) | 2018.05.14 |