1. 운영체제란 무엇인가?
운영체제(operating system)를 이해한다는 것은 컴퓨터 시스템 전체가 어떻게 작동되는지에 대해 아는 것입니다.
이번 시간에 우리는 운영체제가 무엇인지, 어떻게 작동되는지, 하는 일은 무엇이고, 왜 그런 일을 하는지에 대해서 알아보겠습니다.
1) 운영체제의 정의
(1) 운영체제의 정의
▶하드웨어를 사용 가능하도록 소프트웨어나 펌웨어로 구현된 프로그램
(펌웨어 : 기계어보다 하부 계층인 마이크로코드로 작성된 프로그램)
※하드웨어와 운영체제의 차이점 : 하드웨어는
단순한 계산능력만 제공하고 운영체제는 이러한 컴퓨터 능력을 사용자가 쉽게 사용할 수 있도록 해주며, 하드웨어가 잘 수행될 수 있도록 주의 깊게 관리한다.
▶운영체제는 모든 하드웨어와 모든 소프트웨어를 관리하는 컴퓨터시스템의 한 부분인 실행관리자이며, 누가 시스템을 사용할 수 있고 어떻게 사용할 수 있는지를 관리한다.
▶컴퓨터시스템을 관리하는 보스(boss)
(2) 운영체제의 변화추세

1960년대에는 운영체제를 단지 하드웨어를 제어하는 소프트웨어로만 생각했었다. 하지만 오늘날의 경향은 운영체제의 기능이 소프트웨어에서 마이크로코드(microcode), 즉 펌웨어(firmware)로 바뀌어 가는 경향이 있다. 이러한 경향은 이미 널리 퍼져 있고, 머지 않은 장래에는 펌웨어로 코드화된 운영체제가 소프트웨어로 코드화된 것보다 더 보편적이 될 것이다.
2) 운영체제의 역할
운영체제의 가장 큰 역할은 자원의 관리이다.
(1) 운영체제의 관리 대상의 자원
컴퓨터 하드웨어로서 [프로세서], [기억장치], [통신장치], [입출력장치], [데이터]
(2) 운영체제의 변화추세
․사용자 인터페이스의 구현
․사용자들간의 하드웨어 공유
․사용자들간의 데이터 공유
․다른 사용자와의 간섭배제
․사용자들간의 자원 스케쥴링
․입출력에 대한 용이성 제공
․오류의 복구
․자원사용의 평가
․병렬연산에 대한 용이성 제공
․보안 및 빠른 액세스를 위한 데이터의 조직화
․네트워크 통신처리 등
2. 운영체제의 구성요소
운영체제는 네 개의 서브 시스템으로 구성되어 있습니다. 지금부터는 운영체제의 네 가지 서브 시스템에 대해 알아보겠습니다.

1) 운영체제의 구성요소
▶운영체제는 실제로 네 개의 서브시스템으로 구성된다.
▶각 부분들은 컴퓨터 시스템 자원의 상이한 네 개의 카테고리인 주기억장치, 프로세서, I/O 장치, 파일을 제어한다.
2) 각 서브시스템 관리자의 역할
각 서브시스템 관리자의 역할에 대해 살펴봅시다.
(1) 기억장치 관리자
▶기억장치 관리자는 주기억장치를 책임진다.
▶주기억장치 공간에 대한 각각의 요구가 유효한지를 체크하고, 적법한 요구라면 기억장치 관리자가 아직 사용 중이지 않은 부분을 할당한다.
▶멀티사용자 환경에서는 누가 주기억장치의 어느 부분을 이용하고 있는지를 계속 알기 위해 테이블을 만든다.
▶기억장치를 반환할 시간이 되면, 그것을 회수하게 된다. 물론, 기억장치 관리자의 중요한 임무 중의 하나는 운영체제 자신이 점유하고 있는 주기억장치의 공간을 지키는 것이다. 우연이든 고의든 간에 자신이 사용하는 부분의 어느 곳도 허용해서는 안 된다.
(2) 프로세서 관리자
▶프로세스 관리자는 프로세스(processor) 즉 중앙처리장치(CPU)를 프로세스(processor)에게 어떻게 할당할 것인가를 결정한다.
▶프로세스 관리자의 중요한 기능은 각 프로세스(프로세스란 실행중인 프로그램 혹은 작업(job)으로 정의됩니다.)의 상태를 모니터링 하는 것이다.
▶CPU가 프로세스를 실행 중인지 아니면 실행을 마치기 위해 READ나 WRITE 명령어를 기다리고 있는지 검사를 한다. 왜냐하면 프로세스 관리자는 트래픽 제어기와 같이, 프로세스가 실행중인 하나의 상태에서 다른 상태로 넘어가는 과정을 처리하기 때문이다.
▶프로세스 관리자가 프로세서를 한번 할당하면, 필요한 레지스터와 테이블을 작성하고, 작업을 마치거나 한계 허용시간을 초과하면 프로세서를 반환한다.
(3) 장치 관리자
▶장치 관리자는 모든 장치, 채널과 제어 장치(control unit)를 모니터링한다.
▶이 작업은 시스템 설계자에 의해 결정된 스케줄링 기법을 기반으로 하여, 비디오 디스플레이, 키보드, 프린터, 디스크 드라이브, 모뎀과 같은 시스템의 모든 장치를 가장 효율적으로 할당하는 역할을 한다.
▶장치 관리자는 할당을 하고, 작동을 시작하고, 마지막으로 장치를 반환한다.
(4) 파일 관리자
▶파일 관리자로, 컴파일러, 인터프리터, 어셈블러, 유틸리티 프로그램, 데이터 파일과 응용프로그램을 포함하는 시스템의 모든 파일을 모니터링 한다.
▶파일 관리자는 파일에 접근제한을 관리하거나 파일을 열어서 자원을 할당하거나 파일을 닫아 자원을 회수하는 일 등을 수행한다.
3. 운영체제의 종류
크고 작은 운영체제는 응답시간과 데이터가 시스템에 어떻게 들어가는지에 따라 나뉘어 질 수 있습니다. 지금부터는 운영체제의 네 가지 종류별 시스템에 대해 살펴보겠습니다.

1) 운영체제의 종류
크고 작은 컴퓨터의 운영체제는 응답시간과 데이터가 시스템에 어떻게 들어가는지에 따라 일괄처리(batch processing), 대화형(interactive), 실시간(real-time), 하이브리드(hybrid) 시스템과 같이 4 종류로 나뉘어 질 수 있다.
2) 운영체제의 종류별 시스템
운영체제의 종류별 네 가지 시스템에 대해 알아봅시다.
(1) 일괄처리 시스템
▶초창기 컴퓨터에서 사용되었던 일괄처리 시스템은 입력장치로 천공카드나 자기테이프를 사용하였고 "데크(deck)"에 카드를 조합하여 넣으면 작업(job)이 시작되고 그룹으로 카드 리더를 지나가면서 카드의 데크가 실행이 된다.
▶오늘날의 일괄처리 시스템은 주로 OMR카드나 OCR카드를 이용하여 입력되며 사용자와의 상호작용 없이 순차적으로 실행된다.
▶이러한 일괄처리 시스템의 효율성은 주어진 전체 시간 안에 몇 개의 작업(job)이 처리되는가 하는(예를 들면 한 시간에 30개의 작업) 처리능력(throughput)과 수 시간이나 수일 동안에 측정된 반환시간(turnaround time)에 의해 평가된다.
(2) 대화형 시스템
▶대화형 시스템(시분할 시스템)은 일괄처리 시스템보다는 빠른 반환시간을 보여주지만, 실시간 시스템보다는 느리다.
▶대화형 시스템은 이용자가 자신들의 프로그램을 디버깅(debugging)할 때 더욱 빠른 처리 시간을 요구하는 이용자의 욕구를 만족시키기 위해 개발되었다.
▶운영체제는 각 이용자가 터미널을 통해 명령을 직접 컴퓨터에 할 수 있도록 해주는 시분할 소프트웨어의 개발을 요구한다.
▶대화형 운영체제는 이용자에게 즉각적인 피드백을 제공하고 응답시간은 사용중인 이용자의 수에 따라 수 분 또는 수 초안에 처리한다.
▶개인용 컴퓨터는 한 명의 이용자로 되어 있는 대화형 시스템이라고 정의할 수도 있다.
(3) 실시간 시스템
▶실시간 시스템은 모든 시스템 중 가장 빠르며 결과 값이 현재의 결정에 영향을 주기 때문에 데이터의 처리가 극도로 빨라야 하며 반환시간이 매우 중요한 환경에서 사용된다.
▶실시간 시스템은 우주선이나, 공항 관제탑, 고속 비행기, 복잡한 의학 장비, 전기의 분배, 전화 스위치와 같은 분야에서 사용된다.
(4) 하이브리드 시스템
▶하이브리드 시스템은 일괄처리 시스템과 대화형 시스템의 합성이라 볼 수 있다.
▶이 시스템은 각 이용자들이 터미널을 통해 접속하고 빠른 응답시간을 얻을 수 있기 때문에 대화형이지만, 대화형 작업량이 많지 않을 때는 시스템은 실제로 백그라운드에서 배치 프로그램을 받아들이고 실행한다.
▶하이브리드 시스템은 특정한 연산자의 도움 없이, 실행 프로그램을 처리하고자 하는 요구 사이의 빈 시간을 활용할 수 있다는 장점을 가진다.
▶현재 사용되고 있는 대부분의 대형 컴퓨터시스템은 하이브리드 시스템이라고 할 수 있다.
4. 운영체제의 발전 과정
1960년대에는 운영체제를 단지 하드웨어를 제어하는 소프트웨어로만 생각했었습니다. 하지만 오늘날의 경향은 운영체제의 기능이 소프트웨어에서 기계어보다 한 단계 아래 계층이라고 할 수 있는 마이크로 명령어(micro-instruction)을 이용하여 작성한 펌웨어(firmware)로 바뀌어 가는 경향이 있습니다. 이러한 경향은 이미 널리 퍼져있고 머지않은 장래에 펌웨어로 코드화된 운영체제가 소프트웨어로 코드화된 것보다 더 보편적이 될 것입니다. 지금부터는 이러한 운영체제의 발전과정에 대해 살펴보겠습니다.
1) 운영체제의 발전
운영체제의 발전과정을 알아보기에 앞서 최근 운영체제의 정의를 살펴봅시다.
▶1990년대에 들어와 100MIPS(Million Instructions Per Second : 초당 100만개의 명령어 수행) 데스크톱 워크스테이션(desktop workstation)이 일반화되어 있고 머지 않아 초당 10억 개의 명령을 수행할 수 있는 개인용 컴퓨터도 보편화될 전망이며 프로세서(processor)의 가격이 점점 낮아져 여러 개의 CPU를 하나의 시스템에 결합한 멀티프로세서(multiprocessor) 시스템이 21세기 컴퓨터 환경을 주도해 나갈 것으로 보인다.
▶지금까지 널리 사용되어온 한 번에 하나의 기능만을 행하도록 기술되어진 순차적 프로그래밍 언어(sequential programming language)도 동시에 병렬계산(parallel computing)의 표현을 용이하게 하는 병행프로그래밍언어(parallel programming language)로 빠르게 대치되고 있다.
※병행프로그래밍언어 : 광범위한 병렬처리는 결국 인간의 감정이나 지적행동의 다양한 형태를 시뮬레이션(simulation)하거나 강력한 컴퓨터 시스템을 요구하는 곳에 응용할 수 있도록 발전되고 있다.
2) 연대별 발전과정

(1) 1940년대
1940년대의 초기 전자식 디지털 컴퓨터에는 운영체제가 없었다.
당시의 기계는 매우 원시적이어서 프로그램은 기계적인 스위치에 의해서 한 번에 한 비트씩 입력되었다.
그 후 기계 언어 프로그램은 천공 카드 위에 입력되었으며, 프로그램의 처리 속도를 빠르게 하기 위해 어셈블리 언어가 개발되었다.
GM(General Motors) 연구소에서는 그 회사의 IBM 701을 위해 1950년대 초에 최초의 운영체제를 구현하였다.
(2) 1950년대
1950년대의 시스템은 일반적으로 한 번에 오직 하나의 작업만을 수행했으며, 컴퓨터 시스템을 최대한 활용하기 위하여 작업간의 변환을 원활하게 하도록 설계되었다.
이것은 프로그램과 데이터가 집단적으로 또는 일괄적으로 받아들여지므로 단일흐름 일괄처리(single-stream batch processing) 시스템이라고 부른다
(3) 1960년대
▶일괄처리 시스템이지만 몇 개의 작업을 동시에 수행시킴
-1960년대의 시스템 역시 일괄처리 시스템이지만 몇 개의 작업을 동시에 수행시킴으로써 컴퓨터의 자원을 보다 유익하게 사용하는 것이 가능하게 되었다. 그것들은 카드 판독기, 카드 천공기, 프린터, 테이프 드라이버, 디스크 드라이버 등 많은 주변 장치를 포함한다.
▶멀티프로그래밍(multiprogramming)의 개념을 개발
-대부분의 작업은 모든 컴퓨터의 자원을 효율적으로 사용하지 못했다.
운영체제 설계자는 프로세서를 사용중인 하나의 작업이 입출력 작용을 완료하기 위하여 대기하고 있는 동안 다른 작업이 대기중인 프로세서를 사용할 수 있고 마찬가지로 하나의 작업이 프로세서를 사용하는 동안 다른 작업은 입출력 장치를 사용할 수 있게 되어 사실상 다양한 작업을 혼합해서 수행하는 것이 컴퓨터의 사용을 최적화하는 가장 좋은 방법임을 알게 되었다.
그래서 운영체제의 설계자는 몇 개의 작업이 주기억장치에 동시에 있게 하는 멀티프로그래밍(multiprogramming)의 개념을 개발했다.
즉, 주변장치가 사용되는 동안 몇몇 다른 작업을 수행하기 위해 프로세서는 작업들간을 이동하게 된다.
▶OS/360 이라는 운영체제가 출시
-운영체제의 발전과정에서 가장 획기적인 사건은 1964년 IBM System/360 계열 컴퓨터 시스템이 발표되면서 비로소 운영체제로서 기능을 갖춘 OS/360이라는 운영체제가 출시된 일이었다.
이 운영체제는 멀티프로그래밍, 멀티처리, 시분할처리 등의 기본적인 기능들을 내포하고 이후 출현된 많은 운영체제의 모델이 되었으며 수년에 걸쳐 360 설계는 370 계열에 이어 4300, 30X0 계열로 발전되었다.
▶시분할 시스템(timesharing system)
-동시에 멀티 대화식 사용자(multiple interactive users)를 위한 보다 진보된 운영체제가 개발되었으며, 대화식 사용자는 컴퓨터와 직접적으로 연결된 터미널을 통해 컴퓨터와 통신을 한다. 이렇게 사용자가 컴퓨터와 상호작용을 하므로 컴퓨터는 사용자의 요구에 빨리 응답을 해야 하며 그렇지 않으면 사용자의 생산성이 저하된다.
시분할 시스템(timesharing system)은 동시적인 대화식 사용자들의 멀티프로그램(multiprogram)을 위해 개발되었는데 1960년대의 많은 시분할 시스템은 일괄처리는 물론 산업처리 제어 시스템과 같은 실시간(real-time) 응용을 지원하는 멀티모드(multimode) 시스템이었다. 이 시대의 시분할 체제의 개발 노력이 MIT에서 개발된 CTSS(Compatible Time-Sharing System) 시스템, IBM에서 개발된 TSS(Time-Shared Operating System) 시스템, CTSS의 후속으로 MIT에서 개발된 Multics(Multiplexed Information and Computing Service) 시스템, 캠브리지 과학센터에서 개발되어 IBM의 VM(Virtual Memory) 운영체제로 발전된 CP/CMS 시스템에서 엿보인다.
이 시스템들 대부분은 사용자 개개인을 위한 대화식 계산환경을 위해 고안되었으므로 이 시스템의 실질적인 가치는 프로그램과 데이터의 공유, 그리고 개발환경에서 프로그램의 상호작용에 있었다.
▶소프트웨어 공학(software engineering)이라는 분야도 출현
-하드웨어와 마찬가지로 1960년대에 개발된 운영체제는 신뢰성 있고, 이해하기 쉽고, 유지보수가 용이하도록 설계되지 못한 소프트웨어의 복합체였다.
따라서 시스템의 오류를 검사하고 제거하는 데에 수많은 돈과 시간이 소요되었다. 결국 이전의 소프트웨어 설계를 계승받은 새로운 생산자들은 오류가 검출된 많은 소프트웨어 모듈을 이해할 수 없기 때문에 다시 처음부터 작성해야만 했다. 이러한 문제에 대한 관심으로 결국 컴퓨터 과학자들과 산업 전문가들은 소프트웨어 시스템 설계의 문제에 많은 해결방안을 제시하기 시작했다.
또한, 1960년대의 많은 운영체제를 개발하는 데 있어 비능률적인 경험을 토대로 좀더 신뢰성 있고, 이해하기 쉬우며, 유지하기 쉬운 소프트웨어 개발을 위한 새로운 접근방법으로서 소프트웨어 공학(software engineering)이라는 분야도 출현하게 되었다.
(4) 1970년대
▶멀티 모드 시분할 시스템
-1970년대의 시스템은 주로 일괄처리, 시분할처리 및 실시간처리(realtime processing)를 지원하는 멀티 모드 시분할 시스템이다.
이 시기에 CPU의 속도는 놀랄 정도로 발전되었으나 상대적으로 입출력장치들의 속도는 느려 작업 처리상의 많은 문제들이 발생되어 하나의 CPU를 여러 개의 프로그램들이 공유하여 사용하는 멀티프로그래밍 기술이 굉장히 발전된 시기라고 할 수 있다.
즉 1960년대의 실험적인 멀티프로그래밍 시스템과 시분할 시스템은 1970년대의 확고한 시스템으로 발전되었으나 아직도 개인용 컴퓨터는 마이크로 프로세서 기술의 지속적인 촉진에도 불구하고 아직 초기단계에 있었다.
▶근거리 지역 네트워크(LAN : Local Area Network)에서의 통신은 Ethernet 표준에 의해서 실용화
-미국 전역을 통한 컴퓨터 시스템의 통신이 증가되었는데 근거리 지역 네트워크(LAN: Local Area Network)에서의 통신은 Ethernet 표준에 의해서 실용화되고 경제적으로 되었다.
▶보안 문제가 증대됨과 아울러 암호화(encryption)가 많은 주목
-외부의 공격을 받기 쉬운 통신선을 통해 이동되는 다량의 정보를 보호하기 위하여 보안문제가 증대됨과 아울러 암호화(encryption)가 많은 주목을 받게 되었다. 암호화는 매우 사적인 데이터의 보호에 필요하며, 이는 교신 내용이 중간에 누출되더라고 지정된 수신자(또는 해독키를 갖고 있는 프로세서)외에는 누구도 사용을 불가능하도록 하는 것으로서 많은 주목을 끌었다.
(5) 1980년대
▶컴퓨터 구성 요소(component)의 가격 대 성능비가 엄청나게 향상
-1980년대에는 컴퓨터 구성 요소(component)의 가격 대 성능비가 엄청나게 향상되었다. 하드웨어는 부분적인 기능들을 쉽게 교체할 수 있는 카드를 이용하게 되어 융통성이 향상되다. 또한 가격은 점차 하락 되었고 많은 운영체제 기능들이 하드웨어 자체에 포함된 새로운 개념인 펌웨어(firmware : 제 2차 저장장치에 저장이 되는 개념과 반대로 ROM에 영원히 기억되는 프로그램)가 나오게 되었다. 이로 인해 이전에 정의되었던 프로그래머의 작업은 크게 바뀌게 되었다.
왜냐하면, 많은 프로그래밍 기능들이 시스템 소프트웨어에 의해 수행이 되게 되어 프로그래머의 작업이 점점 간단해졌기 때문이다.
▶멀티프로세싱에 적합하게 바뀜
-1980년대 컴퓨터 산업은 두 개 이상의 프로세서들을 이용하는 멀티프로세싱(multiprocessing) 환경으로 변화하게 되었고 하나의 작업을 대상으로 여러 개의 프로세서들이 상호 결합하여 서비스할 수 있도록 프로그래밍 언어도 복잡한 형태로 바뀌었다. 그 결과 병렬 프로그램의 실행이 가능해졌고, 모든 컴퓨터의 운영체제는 멀티프로세싱에 적합하게 바뀌어 갔다.
▶개인용 컴퓨터(personal computer)와 워크스테이션(workstation)의 시대
-1980년대는 개인용 컴퓨터(personal computer)와 워크스테이션(workstation)의 시대이다.
마이크로 프로세서 기술의 발전으로 1970년대의 메인프레임(mainframe)과 같이 강력한 데스크톱 컴퓨터(desktop computer)의 구축이 가능해졌다.
개개인들은 그들의 작업들을 수행하는 개인 소유의 컴퓨터를 가질 수 있으며 시스템과 시스템 사이의 데이터 전송을 위해 통신시설을 사용할 수 있다. 데이터를 처리하기 위해 집중적이고 대규모적인 컴퓨터 장치로 데이터를 가져오기보다는 그 데이터를 필요로 하는 장소에서 분산처리 되었다.
▶클라이언트/서버(client/server) 모델이 널리 퍼짐
-개인용 컴퓨터는 배우거나 사용하기가 쉬우므로 1970년대에는 큰 조직체에서만 컴퓨터를 장만하고 대화형 컴퓨터를 사용할 수 있었지만, 1980년대에는 거의 모든 사람들이 개인용 컴퓨터를 소유하고 접근하며 효율적으로 사용할 수 있었다.
컴퓨터 네트워크로 컴퓨터와 터미널 혹은 컴퓨터와 컴퓨터를 연결하여 서로 정보를 교환하거나 데이터를 검색하는 전자 우편, 파일 전송, 원격 데이터베이스 액세스 등이 확산되었다.
이와 함께 네트워크 상에서 다양한 서비스를 필요로 하는 클라이언트(client)와 하드웨어 혹은 소프트웨어 구성원으로 서비스를 수행하는 서버(server)로 구성되는 클라이언트/서버(client/server) 모델이 널리 퍼지게 되었다.
(6) 1990년대
▶병렬계산(parallel computing)과 분산계산(distributed computing)이 꽃을 피운 시기
-1990년대는 프로세서와 주기억장치의 급속한 발달과 상대적인 가격하락, 그리고 네트워크의 발달로 인해 병렬계산(parallel computing)과 분산계산(distributed computing)이 꽃을 피운 시기라고 할 수 있습니다. 이 시기에는 순차적 처리만으로는 계산능력을 증가시키는데 한계가 있어 많은 프로세서들을 병렬로 연결하여 동시에 작동하는 병렬구조로 전환하는 방법들이 강구되었습니다. 즉, 초당 10억 명령을 수행하는 컴퓨터 1,000대를 병렬로 연결하여 동시에 문제를 수행할 수 있도록 구성할 수 있게 되었습니다.
또한, 수년 전 컴퓨터 하드웨어는 매우 고가 기계였으며 사람의 인건비는 상대적으로 낮았으나 기술이 급속도로 발달하여 프로세서의 사용비가 낮아졌습니다. 10년 전만 해도 회사의 프로세서 사용시간의 90%가 보통 24시간 작동하는 소수의 메인프레임에 의존하는 것이 보통이었지만, 1990년대의 프로세서의 사용시간은 일반적으로 개인용 컴퓨터나 워크스테이션에 분산되었습니다. 즉 계산은 중앙집중(centralized)이 아닌 분산(distributed)으로 발전되었습니다.
▶네트워크와 멀티미디어 처리기술이 가장 발달한 시기
-1990년대는 네트워크와 멀티미디어 처리기술이 가장 발달한 시기라고 할 수 있습니다. 특히 통신망 중의 통신망 혹은 꿈의 통신망이라고 불리는 세계적인 네트워크인 인터넷(Internet)의 보급이 급속도로 확산됨에 따라 세계의 모든 컴퓨터들이 쉽게 연결되고 세계의 모든 정보를 원하는 장소에서 원하는 시간에 얻을 수 있게 되었고 텍스트 위주의 정보에서 벗어나 오디오나 비디오 그리고 애니메이션까지 다양한 정보를 컴퓨터시스템의 기반환경에서 효과적으로 처리할 수 있게 된 시기이기도 합니다.
▶그래픽 사용자 인터페이스(GUI : Graphic User Interface)를 강화하는 쪽으로 발전
-이 시기의 모든 운영체제들은 명령어 기반에서 벗어나 그래픽 사용자 인터페이스(GUI : Graphic User Interface)를 강화하는 쪽으로 발전되었으며 보편적으로 갖고 있는 기능들로는 선점형(preemptive) 멀티태스킹(multitasking)과 멀티스래딩(multithreading), 가상메모리, 메모리보호, 네트워크, 분산환경, 그리고 그래픽 사용자 인터페이스 등이 있습니다.
▶컴퓨터 산업의 활성화
-1990년대 컴퓨터 산업의 활성화와 함께 현재 개인용 컴퓨터 운영체제로는 Windows 3.1, Windows 95, Windows 98, OS/2, Mac OS 등이 사용되었고 핸드헬드 PC 용으로는 Windows CE가 널리 이용되었고 고성능의 마이크프로세서가 탑재된 워크스테이션이나 서버시스템용으로는 Windows NT나 UNIX, 그리고 UNIX의 변형이라고 할 수 있는 Solaris와 Linux, 범용 컴퓨터용으로는 IBM의 OS/390가 널리 사용되었습니다.
(7) 2000년대
▶컴퓨터시스템은 초고속화, 고기능화, 초경량화 쪽으로 발전
-새로운 천년의 시작인 2000년대와 그 이후의 운영체제는 어떻게 발전될까?
반도체기술과 통신기술이 급속한 발전으로 인해 컴퓨터시스템은 초고속화, 고기능화, 초경량화 쪽으로 발전될 것이고, 이러한 하드웨어를 관리하는 가장 핵심적인 소프트웨어인 운영체제도 하드웨어의 처리능력을 극대화할 수 있도록 내부적으로 다양한 기능을 지원하면서 확장성과 호환성을 높이고 새로운 멀티미디어 기술을 수용할 수 있으며 사용자 편의성을 더욱 높이는 쪽으로 발전될 것으로 보인다.
▶고성능의 64비트 프로세서에 맞는 64비트 운영체제가 주류
-2000년대는 64비트 마이크로프로세서와 분산 및 병렬계산이 보편화되고 인터넷을 비롯한 각종 통신망이 고속화되고 더욱 확대됨에 따라 운영체제도 이러한 컴퓨터 환경을 네트워크 기반의 분산 및 병렬 운영체제가 보편화될 것으로 보여진다.
2000년대에서 컴퓨터 구조 기술과 네트워크 기술의 발달로 인해 32비트 운영체제보다는 고성능의 64비트 프로세서에 맞는 64비트 운영체제가 주류를 이루고 범용시스템보다는 서버시스템용 운영체제 그리고 네트워크 활용에 적합한 분산운영체제들이 각광을 받을 것으로 보인다.
▶새로운 사용자 인터페이스의 제공
-2000년대 운영체제가 갖게 될 특징들로는 보다 빠르고 강력한 성능과 더불어 마이크로소프트의 액티브 디렉토리(active directory)나 노벨(Novell)사의 NDS(Novell Directory Service) 등과 같은 분산환경을 위한 다양한 디렉토리 서비스, 분산환경의 활성화와 더불어 시스템의 각종 자원을 보호하기 위한 강력한 보안 기능, 크기가 작으나 강력하며 다양한 마이크로프로세서를 지원할 수 있어 웹폰, 웹TV, PDA, 그리고 가전제품 등의 정보기기 (IA ; Information Appliances)에 사용될 수 있는 높은 이식성, 그리고 전화나 TV처럼 누구나 쉽게 접근하고 이용할 수 있는 새로운 사용자 인터페이스의 제공등이 될 것으로 보여진다.
▶다양한 운영체제 이용 및 발전
-2000년대에는 LAN, WAN, 인터넷 등과 같은 다양한 통신망의 확대와 개방형 시스템의 발달로 어떤 특정 운영체제보다는 Windows 2000/NT/XP, UNIX, Linux, NetWare, Solaris 그리고 기타 다양한 UNIX 변형들과 가전제품이나 모빌 컴퓨터에 맞는 소형 운영체제들이 널리 이용되고 계속 발전될 것으로 보여진다.
5. 운영체제의 개방화 및 표준화
오늘날 컴퓨터와 통신설계에 있어서 가장 중요한 경향은 개방형 시스템(open system)에 대한 개발일 것입니다. 개방형 시스템은 그 명세(specification)가 널리 사용되어지고 받아들여지고 표준화되어진 계산 시스템 또는 통신 시스템을 말합니다. 지금부터는 개방화 시스템에 대해 배워보도록 하겠습니다.
1) 운영체제의 개방형 시스템 요소
운영체제 개방형 시스템의 요소에 대해 알아보도록 합시다.
(1) 개방형 통신 표준(open communication standards)
▶ISO에서 개발되고, 각각 COS(Corporation for Open Systems International), SPAG(Standards Promotion and Application Group), POSI(Promotion of OSI)에 의한 미국, 유럽, 일본에서 발표된 OSI 참조 모델과 같은 개방형 통신규격
(2) 개방형 운영체제 표준(open operating standards)
▶원래 AT&T사에 의해 개발되어 지금은 중요한 개방형 운영체제의 규격으로 널리 권해진 UNIX와 같은 개방형 운영체제 표준
(3) 개방형 사용자 인터페이스 표준(open user interface standards)
▶MIT에서 개발되어진 X Window 시스템과 같은 개방형 사용자 인터페이스 표준
(4) 개방형 사용자 응용 표준(open user application standards)
▶OSF(Open Software Foundation)와 X/Open과 같이 여러 단체에서 채용된 개방형 사용자 응용 표준 통신사업은 표준 환경에서 개발되었다. 즉, 전화기를 사용하여 다른 사람과 통신을 하려는 사람은 설비하고, 승낙하며, 다루고, 종료하는 것을 요구하는 동일한 규칙을 지켜야 한다.
그러나 요즘의 컴퓨터 산업은 각각의 하드웨어판매자가 그들 특유의 설계를 선택하려는 방향, 즉 특허설계가 증대되는 방향으로 발전하므로 다른 종류의 하드웨어를 사용하는 컴퓨터 시스템간의 상호작용을 거의 불가능하게 한다.
몇몇 사람들은 개방형 시스템의 논리가 혁신을 가로막는다고 생각하고 다른 사람들은 개방형 시스템에 의한 산업은 자금으로부터 자유롭기 때문에 보다 나은 기술혁신을 조장할 것이라고 주장한다.
2) UNIX 운영체제
개방형 운영체제의 대표적인 예로 UNIX를 살펴보겠습니다.
▶UNIX 운영체제
개방형 시스템 요소 중 개방형 운영체제 표준으로널리 알려진 UNIX 운영체제는 원래 1960년대 말에서 1970년대 초에 걸쳐 AT&T사에서 설계되었다. UNIX는 단순하고 정밀하여 대학과 산업계에 있는 연구자들의 관심을 끌게 되었고 회사들이 개방형 운영체제의 표준으로서 선택할 정도로 특별한 위치로 부상했다. UNIX는 마이크로 컴퓨터에서 슈퍼컴퓨터에 이르는 컴퓨터에 구현되는 유일한 운영체제로서 거의 대부분 컴퓨터 판매자들이 이를 구현했다. 그러나 UNIX의 표준이 가까운 장래에 나타날 것 같지는 않다. AT&T사에 의해 지속적으로 생산되고 있는UNIX System V는 산업계에 널리 쓰여지고 있으며, 대학에서는 AT&T 버전에서 나온 Berkley UNIX를 옹호한다. OSF(Open Software Foundation)는 IBM사의 AIX UNIX와 같은 시스템에 주된 바탕을 둔 UNIX의 버전을 생산하기 위해 결성되었다. 아마도 전세계적으로 퍼져 있는 컴퓨터 사회의 다양한 요구를 만족시키는 완전하고 유일한 운영체제는 없을 것이다.
[정리하기]
(1) 운영체제의 주된 역할은 자원의 관리이며 관리대상의 주된 자원은 컴퓨터 하드웨어인 프로세서, 기억장치, 입출력장치, 통신장치 등과 소프트웨어인 데이터, 정보 등이 있다.
(2) 운영체제의 구성은 네 개의 서브시스템인 기억장치 관리자(memory manager), 프로세서 관리자(processor manager), 장치 관리자(device manager), 파일 관리자(file manager)로 구성된다.
(3) 운영체제는 일괄처리(batch processing), 대화형(interactive), 실시간(realtime), 일괄처리와 대화형의 결합이라고 할 수 있는 하이브리드(hybrid) 시스템으로 구분할 수 있다.
(4) 일괄처리는 자료를 모아서 한꺼번에 처리하는 시스템을 말하며 대화형(interactive) 시스템은 일괄처리 시스템보다는 빠른 반환시간을 보여주지만 실시간(realtime) 시스템보다는 느리다.
(5) 실시간 시스템은 모든 시스템 중 가장 빠르며 결과 값이 현재의 결정에 영향을 주기 때문에 데이터의 처리가 극도로 빨라야 하고 반환시간이 매우 중요한 환경에서 사용된다.
(6) 1960년대에는 운영체제를 단지 하드웨어를 제어하는 소프트웨어로만 생각했으나 오늘날의 경향은 운영체제의 기능이 소프트웨어에서 기계어보다 한 단계 아래인 마이크로 명령어(micro-instruction)로 작성된 펌웨어(firmware)로 바뀌어 가는 경향이 있다.
(7) 하드웨어의 급속한 발전에 따라 머지않아 초당 10억 개 이상의 명령을 수행할 수 있는 개인용 컴퓨터가 보편화될 것이며 여러 개의 CPU를 탑재한 멀티프로세서 시스템이 21세기 컴퓨터 환경을 주도해 나갈 것으로 보여진다.
(8) 1940년대는 운영체제가 없었고 1950년대에는 한 번에 하나의 작업만을 순차적으로 처리하는 단일흐름 일괄처리, 1960년대는 멀티프로그래밍 개념의 도입, 1970년대에는 멀티모드 시분할 시스템의 보편화, 1980년대에는 멀티프로세싱 환경, 1990년에는 병렬계산과 분산계산의 보편화, 그리고 2000년대에는 모바일 환경과 유비쿼터스 기반의 운영체제와 64비트 운영체제가 주류를 이루게 될 것이다.
(9) 2000년대에는 LAN, WAN, 인터넷 등과 같은 다양한 통신망의 확대와 개방형 시스템으로 표준화되어 한 회사의 특정 운영체제보다는 Windows 2000, UNIX, Linux, NetWare, Solaris 그리고 기타 다양한 UNIX 변형들이 널리 이용될 것으로 본다.
(10) 향후 컴퓨터와 통신에 있어 가장 중요한 경향은 개방형 시스템의 개발이라고 할 수 있는데 개방형 시스템의 요소로는 개방형 통신표준, 개방형 운영체제 표준, 개방형 사용자 인터페이스 표준, 그리고 개방형 사용자 응용 표준 등이 있다.
[보충 자료]
운영체제란 무엇인가?
▶하드웨어를 제어하는 소프트웨어
▶컴퓨터 자원을 관리하는 소프트웨어
▶컴퓨터 사용을 편리하게 해주는 소프트웨어
▶응용 프로그램들의 수행을 도와주는 소프트웨어
▶사용자와 하드웨어사이의 매개체 역할


운영체제의 종류
▶일괄처리 운영체제 - 작업을 모아서 처리, OMR/OCR 사용
▶대화형 운영체제 - 시분할시스템, 일괄처리보다 빠른 응답
▶실시간 운영체제 - 가장 빠른 응답, 결과 값이 현재의 결정에 영향
▶하이브리드 운영체제 - 일괄처리와 대화형 처리의 합성
운영체제의 발전과정
▶1940년대 : 운영체제 없음
- 단지 기계적 스위치에 의해 작동
▶1950년대 : 단순 순차처리
- IBM 7이용 운영체제개발(GM)
▶1960년대 : 다중 프로그래밍
- 1964년 IBM S/360 운영체제 개발
- 다중대화식, 시분할처리, 다중모드
▶1970년대 : 다중모드시분할
- 일괄처리, 시분할처리, 실시간처리지원
- 근거리 지역 네트워크(ETHERNET)
- 다중처리의 대두, 암호화
▶1980년대 : 분산 네트워크
- 개인용 컴퓨터와 워크스테이션의 보급
- 각종 응용 프로그램의 개발
- 데이터베이스 활용 확대
- Client / Server
▶1990년대 : 개방형 시스템
- 사용자 편의성, 메뉴 지향적 운영체제
- 분산계산과 병렬계산
- ISDN, B-ISDN 등의 발전
- OSI 통신규약 사용
▶2000년대 : 분산 및 병렬화
- 다양한 기능, 확장성과 호환성의 극대화
- 네트워크 기반의 분산 및 병렬운영체제
- 64비트용 운영체제와 모빌컴퓨터용 운영체제
입․출력 장치의 발전추세
▶저속출력 ⇒ 고속출력
▶저해상도 ⇒ 고해상도
▶흑백 ⇒ 다양한 칼라
▶인터페이스의 향상
▶음성 입출력과 PDA를 통한 입출력,
▶멀티미디어 및 3차원 영상처리
▶텔레파시와 감성입력
2000년대 주요 운영체제
▶범용컴퓨터 운영체제 *VSE(Virtual Storage Extended) *OS/390(IBM), MSP/EX(FUJITSU)
▶중형컴퓨터 운영체제 *UNIX,LINUX,IRIX,AIX,HP-UX
▶소형컴퓨터 운영체제 *Windows 2000, 닷넷(모빌OS)
'정보과학 > 운영체제특론' 카테고리의 다른 글
네트워크와 분산처리 (1) | 2023.12.09 |
---|---|
파일관리 (3) | 2023.12.05 |
입출력관리와 디스크 스케줄링 (1) | 2023.12.03 |
가상기억장치의 주소변환과 관리기법 (1) | 2023.12.02 |
병행프로세스 (2) | 2023.12.02 |