CS/OS
4. System Structure & Program Execution 2
hjkim0502
2022. 3. 4. 22:04
- 동기식 입출력: I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 구현 방법 1
- 입출력이 끝날 때까지 CPU 낭비 -> 매 시점 하나의 입출력만 일어날 수 있음
- 구현 방법 2
- 입출력 완료까지 해당 프로그램에게서 CPU 빼앗음
- 입출력 처리를 기다리는 줄에 그 프로그램을 줄 세움
- 다른 프로그램에게 CPU를 줌
- 구현 방법 1
- 비동기식 입출력: I/O 시작 후 입출력 작업이 끝나기 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
- 두 경우 모두 I/O의 완료는 인터럽트로 알려줌
- 서로 다른 입출력 명령어
- 메모리에 접근하는 인스트럭션, I/O 수행 인스트럭션 따로
- Memory Mapped I/O: 메모리에 접근하듯이 I/O 수행
- 저장장치 계층 구조
- 윗 계층일수록 빠르며, 가격이 높아 용량이 적다
- primary: CPU가 직접 접근하여 처리 가능하고, 휘발성
- secondary: CPU의 직접 접근 불가, 비휘발성
- 프로그램 실행
- 디스크의 파일 시스템에서 파일을 실행하면 각각 가상메모리(메모리 주소 공간)가 형성되어 프로세스가 올라감
- 각 프로세스의 당장 필요한 부분만 실제 물리 메모리에 올라간다
- 당장 필요하지 않은 부분과 물리 메모리에서 탈락한 부분이 스왑 공간에 담긴다
- 컴퓨터 전원이 종료돼도 휘발되지 않지만 그 데이터들이 의미는 없음
- 메모리 주소 변환: 가상메모리에서의 주소가 물리 메모리에서 어떤 주소를 가지는지 변환 (하드웨어의 역할)
- 커널 주소 공간의 내용
- data: 하드웨어나 소프트웨어를 관리하기 위한 자료구조 정보가 담긴 부분
- stack: 운영체제의 함수를 호출하거나 리턴할때 사용되는 부분
- 사용자 프로그램이 사용하는 함수
- 사용자 정의 함수: 자신의 프로그램에서 정의한 함수
- 라이브러리 함수: 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
- 자신의 프로그램의 실행 파일에 포함됨
- 커널 함수: OS 프로그램 함수
- 커널 함수의 호출 = 시스템콜
- 프로그램의 실행 (A 관점에서)
출처: https://core.ewha.ac.kr/publicview/C0101020140314151238067290?vmode=f