[운영체제] 컴퓨터 시스템 계층 구조
컴퓨터 시스템이 계층 구조로 설계된 이유?
-계층 간의 독립성 확보를 위해(추상화)
‣ 사용자 : OS나 하드웨어에 대한 지식이 없어도 응용 프로그램으로 컴퓨터 활용 가능
‣ 응용 프로그램 개발자 또는 응용 프로그램
: 장치 타입이나 구조, 제어 방법을 몰라도 개발 가능
컴퓨터 하드웨어가 바뀌어도 응용프로그램 다시 작성할 필요 없음
‣ 운영체제
: 장치 관련된 모든 작업을 디바이스 드라이버에게 요청
응용프로그램과 하드웨어 사이 인터페이스 역할
사용자에 대한 운영체제의 역할
- 사용자가 하드웨어에 관한 지식이 없어도 컴퓨터를 다루기 용이하게 함
- 사용자에게 컴퓨터 시스템을 사용할 편리한 인터페이스 제공
- 컴퓨터의 사용을 돕는 여러 도구 응용프로그램(유틸리티) 제공
>> Windows의 파일탐색기와 작업관리자, 리눅스의 쉘
- 사용자 계정 관리
- 사용자의 컴퓨터 사용 시간 계산
응용프로그램에 대한 운영체제 역할
- 응용 프로그램이 직접 하드웨어 다루지 못하도록 차단
>> 응용 프로그램들 간 하드웨어 사용 충돌 막기 위해
- 응용프로그램이 하드웨어 사용하고자 할 때
>> 반드시 운영체제에게 요청 (System call)
- 응용프로그램과 하드웨어 사이 인터페이스 (하드웨어 추상화)
하드웨어에 대한 운영체제의 역할
- 하드웨어 자원 사용에 대한 충돌 해결 및 성능 최적화
- 하드웨어 자원 접근
- 응용프로그램에서 printf(“hello”) → 디스플레이 장치에 “hello”를 출력하는 일은 운영체제가 함
- 응용프로그램에서 scanf() → 키보드로부터 문자를 입력 받는 일은 운영체제가 함
• 운영체제와 커널
운영체제 소프트웨어 구성 : 유틸리티/GUI SW, 라이브러리, 커널, 디바이스 드라이버
유틸리티 소프트웨어
사용자가 컴퓨터를 편리하게 사용, 관리할 수 있도록 설계된 프로그램
ex) 쉘, 탐색기, 명령창, 작업 관리자 등
라이브러리 소프트웨어
특정 부분 기능만 수행하도록 미리 작성되어진 프로그램 모음
① 표준 라이브러리
- 응용 프로그램에서 자주 활용되는 기능으로 커널의 기능과 일차적으로 무관한 작업을 수행하는 프로그램 모음
- 시스템 호출 함수를 래핑함
② 시스템 호출 라이브러리
- 응용프로그램이 커널 코드를 불러 활용할 수 있도록 제공하는 프로그램 모음
- 하드웨어 직접 호출
커널
- 운영체제의 핵심 기능을 구현한 부분, 좁은 의미의 운영체제
- 부팅 후 메모리에 상주하는 코드와 데이터
- CPU, 메모리 등 컴퓨터 자원을 직접 제어하고 관리하는 코드와 자료 구조들
- 커널 코드는 함수들의 집합
- 커널 기능을 이용하려면 응용프로그램은 반드시 시스템 호출(system call) 사용
디바이스 드라이버
- 장치를 직접 제어하고 입출력하는 프로그램
- 장치마다 전담 디바이스 드라이버가 있음
- 일반적으로 장치 제작자에 의해 작성되어 배포됨
- ex) 키보드 드라이버, 디스크 드라이버, SCSI 드라이버, 마우스 드라이버, 그래픽 드라이버, 네트워크 드라이버, USB 드라이버 등
• 커널 인터페이스
커널이 제공하는 2개의 인터페이스 존재
① 시스템 호출
커널과 응용프로그램 사이 중계 역할
응용 프로그램에서 커널 기능을 사용할 수 있는 유일한 방법
시스템 호출 라이브러리 통해 다양한 시스템 호출 함수 제공
- read()함수에 의해 시스템 호출이 일어나는 과정
② 인터럽트
- 커널과 하드웨어 사이 중계 역할
- 장치들이 입출력 완료, 타이머 완료 등을 CPU에게 알리는 하드웨어적 방법
>> 인터럽트를 알리는 하드웨어 신호가 직접 CPU에게 전달
- 인터럽트 발생 시
CPU는 하는 일 중단하고 인터럽트 서비스 루틴(ISR) 수행
ISR은 대부분 디바이스 드라이버 내에 존재
ISR은 커널 영역에 적재
ISR의 수행을 마치면 하던 작업 계속
-인터럽트 활용
운영체제가 장치에게 지시한 입출력 작업의 완료, 예고 없는 네트워크 데이터의 도착, 키보드나 마우스의 입력, 부족한 배터리 경고 등 장치와 관련된 모든 이벤트 처리
참고문헌