1. 운영체제란?

운영체제란 컴퓨터를 제어하는 특수한 컴퓨터 프로그램을 말한다. 운영체제는 소비자와 자원 사이에서 연락을 취하면서 종종 제한된 자원을 다수의 소비자들 사이에 할당하는 것을 조정한다. 자원은 CPU, Disks, Memory, Printer등을 포함하며, 소비자들은 자원에 대한 액세스를 필요로 하는 실행 프로그램들이다. 시분할 시스템에서는 몇 개의 프로그램이 동시에 CPU를 액세스하려고 하는 일이 빈번하다. 운영체제는 경찰관이 복잡한 교차로에서 교통정리를 하는 것과 유사하다. 프로그램이 CPU에서 기회를 얻게 되는 시기와 방법을 제어한다.


2. UNIX의 OS측면에서의 역할

  • Allocate computer resource(CPU, memory, I/O device)
  • Schedule tasks(jobs)
  • Providing interface to user
  • fulfilling requests made by users : 바탕화면, 화면보호기 같은 사용자 요구 프로그램.

3. UNIX의 역사

  •   1969년, 미국 Bell 연구소(현 AT&T)의 Ken Tompson에 의해 개발.(DEC PDP-7 컴퓨터에서 Space Travel이라는 게임이 실행되게 하는 과정에서 작성, 당시 이름은 UNICS(UNiplexed Information and Computer System)
  •   1970년, 유닉스를 C언어로 재 작성.(다양한 다른 컴퓨터에 이식하기 위함)
  •   1974년, BSD설립.(Berkeley Software Distribution)  오늘날과 유사한 유틸리티(vi, C shell추가)
  •   1974~79년, Sun Microsystems창립. BSD의 확장판인 SunOS 개발. 그 외 IBM의 AIX, DEC의 Ultrix, HP의 HP-UX등이 독자적으로 개발.
  •   1980년, Microsoft사에서 XENIX(PC용 UNIX) 발표.
  •   1983년, AT&T System V R1 발표.
  •   이후, System V R4까지 발표.(System V R3.2, BSD, SunOS, XENIX를 통합하여 호환성 문제 해결)

최초의 UNIX는 1969년 미국 Bell 연구소의 CSRG(Computer Science Research Group)에 의해 개발되었다. 최초의 UNIX가 개발될 당시에는 미니 컴퓨터나 그 이하 기종을 위한 적절한 운영 체제가 없었다. 그 당시 Bell 연구소에서는 Multics라는 운영 체제로 작동 하는 GE645라는 컴퓨터가 있었는데, CSRG의 연구진들은 그들의 주된 작업인 프로그래 밍에 관한 연구를 효과적으로 수행하기에 적합한 환경을 만들어 보자는 의도에서 UNIX 운영 체제를 개발하기에 이르렀다. 최초로 만들어진 UNIX 시스템은 미니 컴퓨터 인 PDP-7에서 개발되기 시작하였다. 이 UNIX 시스템은 PDP의 어셈블리 언어로 작성 되었다. 따라서, 이 최초의 UNIX 시스템은 사용되는 컴퓨터의 기종마다 서로 호환성을 가지지 못하는 즉, 기계 의존적이었을 뿐만 아니라 이 시스템을 운영 체제로 사용하던 PDP도 많은 소프트웨어를 제공하지 못했다.

그러나 이러한 상황은 Dennis Ritchie에 의해 C언어가 개발됨으로써 점차 변하기 시작하였는데, 어 셈블리 언어로 되어 있던 UNIX 시스템의 많은 루틴들이 C로 다시 작성된 것이 그것이다. 이렇게 하여 이식성이 좋아진 UNIX 시스템은 잇따라 버전업을 하였고, UNIX 시스템은 Bell 연구소에서 외부 의 세계로 진출하기에 이르렀다. Bell 연구소에서 개발되어 주로 대학 등에 제공된 UNIX 시스템들은 더 이상의 지원 을 받지 못했지만, source 프로그램이 공개되어 있어 많은 대학들과 연구원들에 의해 연구되어 마침내 상업 시장에 진출하기에 이르렀다.

이들 중에서 가장 큰 성공을 거둔 것은 Berkeley에 있는 California 대학에서 개발한 "Berkeley Unix(BSD UNIX라고 부른다)이다. Berkeley 대학의 연구진들은 지금까지 주로 시분할(Time Sharing)시스템이라는 테두리에서 개발한 UNIX 버전들과는 다르게, 분산 처리의 연구를 위한 시스템을 설계하고자 한 것이다. 이 결과로 개발된 최초의 시스템 은 4.1BSD인데, 이것은 Bell 연구소의 System32V를 모태로 하여 개발된 것으로서, PDP 에서가 아니라 Dec의 VAX 컴퓨터에서 작동되도록 하였다. 4.1BSD에 포함되었던 주요 한 부분을 살펴보면 다음과 같다.  

  • 프로세스(Process)주소 공간의 증가  
  • 가상 메모리(Virtual Memory)에 페이징(Paging)기법의 이용  
  • 안정적인 파일 시스템  
  • 근거리 네트워크(LAN)등의 통신 가능  
  • Full-Screen 에디터인 vi(visual interpreter)등의 많은 유틸리티(Utility)  

4. Overview of UNIX System 

4-1. 유틸리티

command로 실행되는 많은 유틸리티를 포함. 사용자가 요구하는 기능을 수행.

4-2. The UNIX system can support many users & many tasks

  •  기존 시스템: single user – single task
  •  WIN95: single user – multi tasks
  •  UNIX: multi users – multi tasks 지원.(네트워크를 이용)

4-3. Kernel

좁은 의미의  OS. H/W를 쓰도록 해 주는 것. 즉, 커널은 UNIX의 심장이며, 자원을 할당하고, 각 사용자의 작업을 scheduling한다.

4-4. File structure

유닉스는 file-directory구조를 가지고, 각 파일들은 서로 link가 가능하다.(link: win95에서의 ‘바로 가기’ 기능)

4-5. Shell

사용자와 시스템 사이의 interface역할을 하는 명령어 해석기. Bourn, Korn, C shell이 있다.

4-6. Job control

각 작업들의 foreground와 background로의 작업영역 변환을 통한 Job control이 가능