운영체제 개요
운영체제(OS)의 정의 : 컴퓨터 시스템 자원을 효율적으로 관리/통제하는 s/w 어플리케이션
운영체제의 목적 : 시스템 생산성 향상, 사용의 편리성 향상
컴퓨터 시스템의 네 부분 : 하드웨어, 응용 프로그램, 운영체제, 사용자
- 하드웨어 : 중앙처리장치, 기억장치, 입출력장치로 구성되어 계산을 하기위한 기본적인 자원 제공
- 응용 프로그램 : 사용자가 제시한 문제를 풀기 위한 자원의 사용방법 정의
- 운영체제
- 자원 할당자 : 컴퓨터 시스템을 공정하고 효율적으로 운영하기 위해 어떻게 자원을 할당할 것인가 결정
- 제어프로그램 : 다양한 입출력 장치와 사용자 프로그램의 통치자
운영체제의 유형
초기의 컴퓨터 :
부피가 매우 큰 하드웨어만 존재
△테이프를 준비하거나 오퍼레이터가 콘솔을 조작하는 동안 중앙처리장치는 유휴 상태가 된다.
일괄 처리 시스템 :
유휴 상태의 시간 없애기 위해 작업 순서의 자동화 개념 도입, 작업의 준비 및 실행 순서 자동화
한 프로그램에서 다음 프로그램으로 제어를 자동적으로 넘기기 위해 만들어진 상주 모니터를 둠
△하나의 작업이 시작되면 그 작업이 모든 시스템 자원을 독점해
여러 시스템 자원, 특히 중앙처리장치가 빈번한 유휴 시간을 가진다.
다중 프로그래밍 시스템 :
중앙처리장치가 항상 수행되도록 하여 그 이용도를 높이기 위한 방안으로,
주기억장치 내에 여러 프로그램이 존재하도록 한다.
해당 작업이 기다리는 상태가 되면 운영체제가 중앙처리장치를 다른 작업이나 프로그램에게 교환하여 줌으로써
중앙처리장치는 쉬는 시간이 없게 된다.
시분할 시스템 :
다중 프로그래밍의 변형된 형태로서 사용자들로 하여금 터미널을 통하여 컴퓨터와 직접 접촉할 수 있도록 하였다.
각 사용자로 하여금 자신이 컴퓨터 시스템을 독점 사용하고 있는 듯한 환상을 가지도록 한다.
여러 사용자들이 컴퓨터 자원에 대한 짧은 시간 단위의 공유를 통해 현실화되었으며,
사용자는 대화식 단말장치를 이용하여 시분할 시스템과 인터페이스 한다.
△자원 제어에 대한 대부분의 책임을 운영체제에 전가해 운영체제를 복잡하게 한다.
실시간 시스템 :
마이크로컴퓨터와 고속 아날로그/디지털 입출력장치의 발전과 더불어 개발되고 실용화된 시스템으로서
대개 특수 목적만을 위한 응용 분야에서 제어장치로 사용된다.
좌석예약 시스템, 온라인 뱅킹, 적의 공중 공격에 대비한 감시 등에 대한 사건 발생 신호를 받아
그 사건의 해결을 위해 제시된 데이터를 처리하여 응답하는 과정에 대한 제어를 책임져야 한다.
다중 처리 시스템(멀티프로세싱 시스템) :
컴퓨터 시스템을 여러 개의 프로세서로 구성하는 다중 처리 기법이다.
마이크로프로세서의 등장으로 프로세서가 비용이 적어졌고 크기가 작아졌기 때문이다.
다중 처리 시스템은 공유 기억장치를 통하여 하나로 연결된 다중 처리기의 제어 및 공유를 위한 시스템이다.
시스템 운영 환경은 크게 두 가지로 나뉘어진다.
- 밀착된 결합 : 프로세서들이 해당 작업을 처리함에 있어서 매우 밀접하게 동기화되어야 한다.
- 느슨한 결합 : 프로세서 간의 동기화 문제가 엄격하지 않고 다만 두 개나 그 이상의 프로세서들을 결합해
보다 높은 작업의 처리율을 제공하는데 목적을 둔다.
개인용 컴퓨터 시스템 :
개인용 컴퓨터는 대형 시스템보다 작고 값이 싼 초소형 컴퓨터이다.
분산 처리 시스템 :
최근의 컴퓨터 시스템은 여러 개의 물리적 프로세서들 사이에서 연산을 분산화시키려는 경향이 있다.
이러한 시스템을 구성하는 데는 기본적으로 두 가지 형태가 있다.
밀착된 결합 시스템에서는 프로세서들이 기억장치와 클럭을 공유한다.
통신은 공유 기억장치를 통해서 행해진다.
느슨한 결합 시스템에서는 프로세서들이 기억장치와 클럭을 공유하지 않는다.
각 프로세서들은 자신의 지역(local) 기억장치를 가지며,
프로세서들은 고속의 버스나 전화선 같은 다양한 통신 라인을 통해 서로 통신한다.
분산 시스템이란 통신 네트워크를 통하여 서로 느슨히 결합된 프로세서들의 집합이다.
일반적으로 자원을 가지고 있는 사이트는 서버가 되며,
반면 다른 사이트에서 클라이언트나 사용자는 그 자원을 사용한다.
자원이라는 것은 프린터나 CD드라이버와 같은 하드웨어 파일이나 프로그램 같은 소프트웨어를 의미한다.
네트워크 운영체제 : 노드 간 기종의 차이가 심하고 대규모 네트워크 시스템에 사용되며,
각 노드들은 독자적인 운영체제를 가진다. 통신기능은 기존 운영체제 위에 존재하며 자원 공유가 곤란하다.
분산 운영체제 : 각 노드들을 통괄할 수 있는 하나의 운영체제로 운영되며, 통신기능은 운영체제 설계 시 고려된다. 자원 공유가 용이하다.
멀티미디어 시스템 :
멀티미디어 시스템은 다양한 미디어를 이용하여 멀티미디어 콘텐츠를 제작하기 위해 필요한 하드웨어와 소프트웨어로 구성되어 있다.
멀티미디어 시스템은 목적에 따라 멀티미디어 콘텐츠를 제작할 수 있는 기능과 환경을 제공하는 저작 시스템과
단순히 멀티미디어 콘텐츠를 이용하고 재생하기 위한 재생 시스템으로 나눌 수 있다.
멀티미디어 콘텐츠를 제작하고 재생하는 하드웨어 환경과 소프트웨어 환경을 합쳐서 멀티미디어 플랫폼이라고도 부른다.
임베디드 시스템 :
임베디드 시스템은 마이크로프로세서 또는 마이크로컨트롤러를 내장하여 시스템 제작자가 의도한 몇 가지 혹은
특수한 기능만을 수행하도록 제작된 시스템을 말한다.
자동차, 내비게이터, 핸드폰 등등이 있다.
운영체제에 대한 관점
자원 관리자 관점 :
운영체제를 컴퓨터 시스템을 구성하는 각종의 자원 관리자로 보는 관점이다.
시스템 자원에는 프로세서, 기억장치, 각종 장치, 그리고 프로그램이나 데이터 같은 정보들이 있다.
운영체제의 기능은 이 자원들이 효율적으로 사용되도록 관리하고
다양한 요구를 가지는 사용자 간에 발생할 수 있는 자원에 대한 경쟁 및 이로 인한 충돌을 해결하는 것이다.
운영체제를 자원 관리자 관점에서 보면, 각 자원에 대한 관리자는 공통적으로 다음과 같은 과정을 수행한다.
①자원의 상태를 추적, 저장
②어떤 프로세스가 언제 어떤 자원을 얼마나 사용할 것인지를 결정하기 위한 정책 수립
③자원의 할당
④자원의 회수
프로세스 관리 기능
① 중앙처리장치와 프로세스의 상태를 추적,저장한다. 이를 수행하는 프로그램을 트래픽 제어기 라고 한다.
② 작업 스케줄러는 제시된 모든 작업 중 하나를 선택하여 그 작업이 필요로 하는 자원을 할당한다.
만약 다중 프로그래밍 시스템이라면 어떤 프로세스가 언제 얼마나 중앙처리장치를 차지할 것인지를 결정해야 하는데
이는 프로세스 스케줄러에 의해 결정된다.
③ 디스패처는 프로세스에게 중앙처리장치를 할당한다.
④ 프로세스가 수행을 마치거나, 사용의 양도 또는 허용된 사용 시간을 초과할 경우 중앙처리장치를 회수한다.
기억장치 관리 기능
①, ②, ③, ④
장치 관리 기능
①, ②, ③, ④
정보 관리 기능
①, ②, ③, ④
프로세스 관점 :
운영체제를 자원 관리를 위한 프로그램 모듈의 집단으로 보는 관점이다.
여러 작업이 수행되어야 할 경우, 중앙처리장치가 처리할 수 있는 것은
어느 한 시점에서 볼 때 오직 하나의 프로세스뿐이다.
따라서 선택받지 못한 프로세스는 자신의 위상에 따라 상태를 변환시켜야 한다.
운영체제는 하나의 작업이 제시되어 완료될 때 까지의
하나의 프로세스에 대해 그 상태를 변환시키고 관리할 책임이 있다.
계층 구조 관점 :
자원 관리 루틴이 어떻게 수행되고, 이 루틴들이 상호 간에 어디에 논리적으로 위치하는 것인지 파악한다.
모듈화된 자원 루틴들이 어떻게 관계하는지에 대한 관점이다.
시스템 모듈(운영체제)에서 필요로 하는 주된 기능은 '내부적 확장 기계'로,
그 이외의 모듈은 '외부적 확장 기계'로 분류된다.
입출력 프로그래밍
컴퓨터 시스템이 발전함에 따라 중앙처리장치나 기억장치와 같은 전자적인 장치는 성능의 향상이 꾸준히 진행되어 온 반면, 입출력장치와 같은 기계적인 장치들은 발전 속도가 상대적으로 느려짐에 따라
이들 △장치 간의 처리 속도 차이가 문제가 되었다.
또한 이들 장치 간의 데이터 처리시간도 일정하지 않다.(불확실성)
이렇게 처리 속도 차이 및 불확실성 때문에 입출력 프로그래밍이 필요한 것이다.
중앙처리장치 내에서의 모든 연산은 제어장치의 통제에 의해 동기화되어 작동한다.
그러나 대부분의 컴퓨터에 있어서 입출력은 중앙처리장치와 비동기적으로 수행되는데,
이 의미는 중앙처리장치와 입출력장치에 대한 작동이 독립적이며, 병행적으로 수행됨을 의미한다.
BIOS :
컴퓨터의 입출력을 담당하는 소프트웨어이다.
이 정보는 ROM칩에 저장되어 있어야 한다. 하드 드라이버가 고장 나더라도 접근할 수 있어야 하기 때문이다.
컴퓨터가 ROM에서 얻는 정보를 BIOS라고 한다. BIOS는 부트 프로세스를 실행시키는 명령어들을 포함하고 있으며,
이러한 형태의 컴퓨터칩에 저장된 명령어들을 펌웨어라고 한다.
부트 진행 과정(boot process) :
대부분의 컴퓨터에서 다음과 같은 정해진 순서에 따라 부팅이 진행된다.
1. ~ 9.
POST :
성공적인 부팅 및 적정 수행의 확인을 위해 필요 하드웨어에 대해 행하는 테스트이다.
버퍼링 :
입출력장치나 보조기억장치는 기계적 요인 때문에 중앙처리장치와 비교할 때 매우 느린 속도로 작동한다.
이와 같은 입출력장치의 느린 속도를 보완하는 한 가지 방법으로 버퍼링이 있다.
한 레코드가 읽혀 중앙처리장치가 그것에 대한 연산을 시작함과 동시에 입력장치가 곧 다음에 필요한
레코드를 미리 읽어서 주기억장치에 저장함으로써, 중앙처리장치가 필요한 레코드를 기다릴 일이 없도록
하는 것이다.
미리 읽혀진 레코드들이 존재하는 곳은 주기억장치의 일부인데 이를 버퍼라고 하고,
이와 같은 일련의 과정을 버퍼링이라고 한다.
1. 중앙처리장치는 출력할 데이터를 버퍼에 채운다.
2. 버퍼가 다 채워지면 중앙처리장치는 채널에게 출력을 지시하고, 자신의 일을 계속한다.
3. 채널은 출력을 수행함으로써 버퍼를 비운다.
4. 출력을 완료함으로써 버퍼를 다 비우면 중앙처리장치에게 알린다.
1. 중앙처리장치가 버퍼 A를 채운다.
2. 다 채우면 채널에게 버퍼A의 출력을 지시한다.
3. 버퍼A에 대한 출력과는 무관하게 버퍼B를 채운다.
4. 채널은 버퍼A를 비운다.
5. 채널은 버퍼A를 다 비웠음을 중앙처리장치에게 알린다.
6. 중앙처리장치는 다시 버퍼 A를 채우고 채널은 버퍼B를 비운다. (여기서 1과6, 3과4는 동시에 발생할 수 있다.)
스풀링(SPOOLing) :
버퍼링은 주기억장치를 버퍼로 사용하는 반면, 스풀링은 디스크를 매우 큰 버퍼처럼 사용하는 것이다.
이 방법은 특히 다중 프로그래밍 환경 하에서, 다수의 프로세스들이 입출력 장치를 서로 요구하나
실제로 그 장치의 수가 제한되어 있을 때 이들에 대한 공유를 가능하게 하기 위해서 가상 장치를
각 프로세스에 제공해 주는 개념이다.
프로세스들은 입력 또는 출력을 실제 입출력장치를 통하지 않고
가상 입출력장치인 디스크를 매체로 이용한 후, 다시 실제의 입력과 출력을 행하도록 한다.
이러한 모든 일들은 운영체제의 일부인 SPOOL이라고 하는 프로그램이 수행하게 된다.
채널 :
입출력장치와 중앙처리장치 사이에 입출력 전담 처리기인 입출력 채널을 두어 컴퓨터 시스템을 구성한다.
채널을 이용하면 입출력의 수행 완료를 기다릴 필요 없이 계속해서 연산을 수행할 수 있다.
선택 채널은 여러 개의 입출력장치가 연결되어 있다 하더라도 한 번에 단 하나의 입출력장치만을 선택적으로 지원하며,
비교적 전송 속도가 빠른 입출력장치인 디스크나 CD-ROM 등의 입출력을 제어한다.
멀티플렉서 채널은 키보드나 프린터 같은 비교적 전송 속도가 느린 입출력장치를 제어하기 위한 채널로서
다수의 저속도 입출력 장치가 채널의 단일한 데이터 경로를 공유하면서 데이터를 전송한다.
즉, 여러 개의 저속도 입출력장치가 멀티플렉서 채널에 연결되어 시분할 형태로 제어된다.
중앙처리장치가 입출력 명령을 처리하는 상황에서의 채널의 동작 원리는 다음과 같다.
첫째, 중앙처리장치는 채널의 현재 상태를 점검한다.
둘째, 채널의 상태가 양호하면 채널로 하여금 실질적인 입출력 동작을 개시하라고 한다.
셋째, 채널은 해당 입출력 명령의 수행을 위한 채널 명령어를 선택한 후, 데이터의 입출력을 중앙처리장치와는 독립적으로 수행한다. 수행이 종료되면 중앙처리장치에 인터럽트를 요청한다.
넷째, 중앙처리장치는 해당 채널의 인터럽트를 인지하여, 상황에 따른 다음 동작을 지시한다.
인터럽트 :
시스템에 예기치 않은 상황이 발생하였을 때, 그것을 운영체제에 알리기 위한 매커니즘이다.
IBM 계열의 기계에는 그 발생 원인에 따라 6가지 종류의 인터럽트가 있다.
- 입출력(I/O) 인터럽트
- 외부 인터럽트
- SVC(SuperVisor Call) 인터럽트
- 기계 검사
- 프로그램 에러 인터럽트
- 재시작 인터럽트
인터럽트의 처리 과정
1. 중앙처리장치가 실행하던 중 인터럽트가 발생하였다. 이 경우 현 상태에서의 프로그램 카운터와 프로그램의 다음 수행에 도움이 되거나 필요한 제반정보를 주기억장치의 일정한 지역에 보관한다.
2. 해당 인터럽트에 대처하기 위한 인터럽트 처리 루틴으로 제어를 이동시켜 이 인터럽트를 해결한다.
3. 인터럽트 처리 루틴의 수행을 완료하면,
4. 인터럽트가 발생했던 지점으로 되돌아와 보관해 놓은 정보를 이용하여
5. 원래 수행 중이었던 프로그램을 처리한다.
여기서 인터럽트의 발생 시 일단 인터럽트 된 실행 중인 프로그램의 상태를 기억시켜 두고
제어권을 인터럽트 처리 루틴에게로 넘기는 작업을 문맥 교환이라고 한다.
문맥 교환 과정에서 PSW(Program Status Word)는 명령문 수행의 순서를 조절하며,
실행 중이던 프로그램의 상태에 대한 여러가지 정보를 보관한다.
인터럽트의 처리 과정 및 PSW 위치
PSW에는 세 가지 종류가 있는데 현재의 PSW, 과거의 PSW, 새로운 PSW 등이다.
여기에서 과거의 PSW와 새로운 PSW는 미리 결정된 주기억장소에 위치한다.
1. 인터럽트가 발생하면 하드웨어적 방법으로 현재의 PSW를 과거의 PSW에 저장하고
2. 새로운 PSW를 현재의 PSW에 저장한다.
3. 그 후 중앙처리 장치는 현재의 PSW에 의해 명시된 명령어를 수행하기 시작한다.
4. 이 과정을 거치는 동안 인터럽트가 처리된다.
5. 인터럽트 처리 루틴의 마지막 부분에는 과거의 PSW를 현재의 PSW로 환원시키는 명령어가 수행된다.
이 명령어를 수행함으로써 시스템은 인터럽트가 발생하기 이전의 상태로 돌아가
중단되었던 프로그램의 수행을 계속한다.
'전공 지식 정리 > 운영체제' 카테고리의 다른 글
#4 가상 메모리 관리 (0) | 2022.06.14 |
---|---|
#3 기억장치 관리 (0) | 2022.04.20 |
#2 프로세스와 스레드 관리 (1) | 2022.04.19 |