운영체제 설계 이슈
설계 목적
효율성(efficiency)
- 빠른 처리기와 느린 입출력 장치 -> 병목현상(bottleneck) 발생
- 문제의 해결방법 -> 멀티프로그래밍
- 대량의 주기억장치 시스템에서도 입출력 처리 속도는 처리기의 속도를 못따라잡음
- 디스크가 가장 중요한 입출력 장치이기 때문에 디스크 입출력이 가장 주목
일반성(generality)
- 간결성관 무결성을 위해서는 모든 장치들을 일관된 방식으로 다루어야 함
- 입출력 기능 설계에 계층적인 모듈 접근법 사용
- 입출력 장치의 세부 사항 대부분을 하위 수준의 루틴 내에 감춤으로써 사용자 프로세스와 운영체제의 상위 수준 기능들이 읽기, 쓰기, 열기, 닫기 등의 일반적인 기능들을 통해 장치에 접근
입출력 기능의 논리 구조
논리적 입출력(Logical I/O)
- 장치를 논리적 자원으로 취급하며 실제로 장치를 제어하는 세부사항들은 관심X
- 사용자 프로세스를 대신해서 일반적인 입출력 기능들을 관리
- 사용자 프로세스가 장치 식별자와 간단한 명령들로 장치에 접근할 수 있게 함
장치 입출력(Device I/O)
요청된 연산과 데이터(버퍼된 문자들, 레코드 등)는 해당하는 입출력 명령, 채널 명령, 제어기 명령으로 변환
스케줄링과 제어(Scheduling and control)
- 입출력 연산의 실제적인 큐잉과 스케줄링, 연산 제어가 일어나는 계층
- 인터럽트 처리 + 입출력 상태가 수집되어 보고
- 실제로 입출력 모듈, 하드웨어 장치와 상호작용하는 소프트웨어 계층
파일시스템의 경우
- 파일 시스템을 지원하는 보조기억장치와의 입출력을 관리하는 대표적 구조
- 디렉토리 관리(Directory management)
- 심볼릭 파일 이름이 직접 파일을 가리키거나 파일 디스크럽터 또는 색인 테이블을 통해 간접적으로 파일을 가리키는 식별자로 변환
- 추가, 삭제, 재배치와 같이 디렉토리에 영향을 주는 사용자 연산 제공
- 파일 시스템(file system)
- 파일의 논리적 구조와 사용자가 명시하는 조작(열기, 닫기, 쓰기 등) 제공
- 물리적 구성(Physical organization)
- 파일과 레코드의 논리적 참조 -> 보조기억장치의 물리적 트랙과 섹터 구조를 고려하여 물리적인 보조기억장치 주소로 변환
- 보조기억장치 공간과 주기억장치 버퍼를 할당