728x90

간단하게나마 computer science에 대해 공부하고자 책 한권을 읽고 있다. 읽으면서 챕터 별로 개념들을 정리해보려 한다.

 

컴퓨터 시스템에서도 하드웨어에 해당하는 CPU나 메모리에 대해서 정리해보았다면, 이번에는 소프트웨어에 대해 정리해보려 한다.

실제로 소프트 웨어는 아래의 그림과 같이 분류된다.

->여기서 응용 소프트웨어를 application으로 이해하면 된다. 

운영체제의 목적(역할)

1) 하드웨어 자원의 효율적 이용
: 컴퓨터 시스템의 프로세서, 주기억장치 등과 같은 하드웨어를 효율적으로 관리하며, 사용자가 가장 효율적을 이용할 수 있도록 하드웨어 자원을 배분한다. 

  • CPU(중앙처리장치) => 각 프로그램이 얼마나 CPU를 사용할지를 결정할 수 없다. 이를 해주는 것이 OS이다. 
  •  Memory(DRAM, RAM) => 각 프로그램이 어느 주소에 저장되어야 하는지, 어느 정도의 메모리 공간을 확보해주어야 하는지를 결정할 수 없다. 이를 해주는 것이 OS이다. 
  •  I/O Devices(입출력장치): Monitor, Mouse, Keyboard, Network  => 스스로 표시, 작동 될 수 없다. 이를 해주는 것이 OS이다. 
  •  저장 매체: SSD, HDD  => 어떻게, 어디에 저장할지를 결정 할 수 없다. 이를 해주는 것이 OS이다.

2) 자원의 편리한 이용(즉, 사용자와 컴퓨터간의 커뮤니케이션 지원)
ex) 과거 MS-DOS의 명령어를 통해 컴퓨터 자원을 활용햇으나, 지금은 windows 운영체제를 이용하고 있다. 이를 통해 메뉴, 아이콘, 마우스 포인터 등으로 사용자가 편리하게 컴퓨터 자원을 사용할 수 있게 되었다. 이 것이 바로 운영 체제의 역할이자 목적이다. 

 

3) 응용 프로그램(소프트웨어) 제어

  • 응용 프로그램을 실행시킨다. 
  • 응용 프로그램간의 권한을 관리해준다. (ex. 관리자 권한으로 실행하는 등..)
  • 응용 프로그램을 사용하는 사용자도 관리해준다.

 

 

운영체제의 발전(참고 블로그 링크)

대표적인 운영체제로는 도스(DOS), MS 윈도우 , 맥OS, 유닉스, 리눅스 등이 있다.  

 

1950년대

컴퓨터 사용자가 직접 컴퓨터의 모든 작동을 수동적으로 수행했다. 즉 운영체제가 별도로 존재하지 않았다.

 

1960년대 초기 : 배치프로세싱(Batch Processing System)의 등장

배치 프로세싱은 처리할 프로그램을 순차적으로 주기억장치에 저장하여 도착한 순서에 따라 하나씩 실행하는 방식, 즉 FIFO(First-In-First-Out)방식이다. 처리할 프로그램이나 명령어를 작업 도는 잡(Job)이라 부르며, 각 작업은 컴퓨터 시스템 내에서 작업 대기열을 구성하여 자신이 처리될 순서를 기다린다. 이런 경우 일괄적으로 등록 처리하고, 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있다. 즉 사용자입장에서는 응답시간이 길다. 또한 그리고 CPU가 필요없는 시간대에도 응용 프로그램이 CPU를 점유하고 있을 수 있기 때문에 총 실행 시간도 오래 걸릴 수 있다. 또한 다중 사용자/ 다중 프로그램 사용 지원이 어렵다. 

 

-> 상호 대화식 프로세싱

: 프로그램의 수행 도중에 이용자가 데이터를 제공하거나 프로그램의 수행에 관여하고 싶은 경우에 배치 프로세싱은 이용자와 상호대화를 허용하지 않는다. 이와 달리 상효 대화식 프로세싱은 모니터를 통하여 프로그램의 실행 도중에 데이터를 제공하거나 프로그램을 제어하고 경우에 따라서 중간결과를 확인할 수 있는 방식이다. 

 

1960년대 후반: 시분할 시스템(Time Sharing System)과 멀티 태스킹(Multi Tasking) (이 때까지도 운영체제로 구현되지는 못했다,)

실제로 컴퓨터에 사용자가 여러 개의 프로그램을 동시에 실행하거나, 하나의 프로그램을 더 빠르게 실행하고자 하는 경우, 즉 멀티태스킹에는 다양한 기술이 필요하다. 예를 들어 음악을 틀어놓은 채로 문서 작성 작업과 그림편집 작업을 동시에 하는 경우이다.

그리고 CPU가 하나인 경우, 한 순간에 하나의 작업만이 실행가능하므로, 여러개의 작업을 시간을 분할하여 순서대로 돌아가며 실행하는 것이 시분할 기법이다. 

 

시분할 시스템과 멀티 태스킹은 서로 목적은 약간 다르지만, '시간을 잘게 쪼개서 실행시킨다'는 점에서 유사하며, 보통 시분할 시스템과 멀티 태스킹을 유사한 의미로도 많이 사용한다. 

시분할 시스템은 다중 사용자를 지원하는 것이 목적이며, 다중 사용자를 지원하기 위해선 컴퓨터 응답 시간을 최소화 해야하는데 이에 적절한 시스템이다.  CPU의 작업시간을 여러 프로그램들이 조금씩 나누어 쓰게 된다. 시간단위로 쪼개서 마치 동시에 실행되는 것처럼 보여서, 배치 처리 방식에 비해 짧은 응답시간을 갖게 된다.

멀티 태스킹은 단일 CPU에서 여러 응용 프로그램의 병렬 실행을 가능하게 하는 것이 목적이며 시간대비 CPU 사용률을 높이는데 적절한 시스템이다.

 

-> 물론 CPU가 여러개인 경우엔, 각 작업을 각 CPU에 나눠서 동시에 작업하게 할 수 있는 병렬처리가 가능할 것이다. 즉 멀티 프로세싱을 의미한다.

 

※ 멀티 태스킹과 멀티 프로세싱

멀티 태스킹은 단일 CPU에서 여러개로 쪼개진 프로세스가 실행되도록 하는 것이며 

멀티 프로세싱은 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행속도를 극대화시키는 시스템이다. 

멀티 프로그래밍은 최대한 CPU를 일정 시간당 많이 활용하는 시스템이다. 

 

1970년대 초기

UNIX OS라는 제대로 된 운영체제가 등장했다. 이전에는 각 컴퓨터 시스템마다 자체의 운영체제를 가지고 있었으며, 위에서 설명한 배치프로세싱, 시분할 시스템 등의 방식으로 발전해갔다. 

 

**UNIX
1969년에 어셈블리어로 개발되었다가 1971년 C언어를 이용하여 다시 작성되었다. UNIX는 무상으로 제공되어 현재 다양한 컴퓨터 기종에서 구현되고 있다. 다중 사용자 및 다중작업 기능을 지원하며, 명령어 방식의 인터페이스를 기본으로 한다. 명령어 방식이라 함은 흔히 우리가 터미널창을 켜서 입력하는 ls, cd 등의 명령어를 의미한다. 

**리눅스
유닉스 계열의 운영체제 중 대표적인 공개 소프트 웨어이다. 최초의 공개소스 운영체제의 커널로 개발된 것이다. 리눅스, 커널에 대한 개념은 중요한 개념이므로 이후에 추가적으로 공부할 예정이다.

 

1980년대

개인용 컴퓨터의 시대이며 1980년대 초반은 아직 터미널 환경(CLI)이었지만 중후반에는 GUI환경이 되었다. 

 

1990년대

GUI환경의 응용 프로그램시대(엑셀, 워드 프로세서 등), Windows OS 대중화

네트워크 기술 발전 - WWW(월드와이드웹) 인터넷 대중화

오픈소스운동 활성화 시작

 

2000년대 이후

오픈 소스 활성화

가상머신, 대용량 병렬 처리 등의 활성화

 

 

728x90

+ Recent posts