본문 바로가기
그 밖에 잡담

유닉스(Unix) 개념, 역사와 특징

by 배애앰이 좋아 2020. 3. 14.
반응형

소 주제 1. Unix?

 

유닉스(영어Unix)는 교육 및 연구 기관에서 즐겨 사용되는 범용 다중 사용자 방식의 시분할 운영 체제이다. 또한 대부분의 현대적 컴퓨터 운영 체제의 원형이 된 OS이다.  1970년대 초반  연구소 직원인  톰슨데니스 리치 등이 처음 개발하였다. 초기의 유닉스 운영체제는 어셈블리(Assembly) 언어로 작성되었으나, 같은 연구소의 Dennis Ritchie C 언어를 개발한 뒤, 이 언어를 이용하여 유닉스를 다시 만들었다. 그리하여 1973년에 다른 운영체제와는 달리 유닉스는 C언어가 90% 이상이고 나머지가 어셈블리 언어로 작성되어, 고급언어로 작성된 최초의 운영체제가 되었다. 오늘날의 유닉스 시스템은 여러 회사들과 비영리 단체들이 이 커널로 활용하여 리눅스안드로이드macOSiOS 등의 많은 다양한 운영체제를 개발하고 있다.


운영체제(OS, Operating System) : CPU, RAM, ROM, 모니터 등의 하드웨어를 동작 시키고 제어할 수 있는 프로그램. 일반적인 운영체제로는 윈도우, Mac OS, 리눅스 그리고 유닉스가 있다.

어셈블리(Assembly) 언어 : 컴퓨터의 기계어를 사람이 기억하기 쉬운 단어로 일대일 대응하여 만들어진 프로그래밍 언어. 컴퓨터가 이해하기는 쉬워도 사람이 기억하기 어려운 저급 언어.

소 주제 2. Unix 역사

 

1965 MIT, AT&T 벨 연구소, General Electric에서는 Multics라는 실험적인 운영체제를 공동으로 개발하는 프로젝트를 진행하였다. 이 프로젝트는 멀티태스킹, 멀티유저를 지원하는 초기 형태의 시분할 운영체제를 만들고자 한 것이었지만 Multics는 초기의 설계 목표와는 다르게 비대해지고 쓸모 없는 운영체제로 개발되어갔고, 프로젝트는 좌초되기에 이르렀다. 그러나, 이 프로젝트에 참여했던, 켄 톰슨과 몇몇 연구원들은 프로그램에 관한 연구를 효과적으로 수행하기에 적합한 환경을 만들어보자는 의도에서 계속하여 운영체제 개발에 몰두하였고, 그래서 탄생한 것이 초기 형태의 UNIX였다.

 

당시에는 하드웨어를 운영하는 프로그램을 그 하드웨어의 어셈블러로 작성하여 사용했는데, 유닉스 역시 어셈블리어로 작성되었다. 그러나 다른 기종에 이식하려면 그 기종에 맞는 어셈블리어로 다시 작성해야만 하는 불편을 있었고 초기의 UNIX는 기계 의존적이며, 기종 간에 호환성이 없었다.

 

이러한 상황에서 데니스 리치(Dennis Ritchie) C언어를 개발함으로써, 어셈블리 언어로 되어있던 UNIX C언어로 재작성 되어 다시 태어나게 되었다. 이제 UNIX는 이식성과 호환성 있는 시스템으로서 사용자들로부터 큰 반향을 일으켰고, 벨 연구소를 중심으로 유닉스 사용자 그룹이 형성되며 빠르게 버전업 되면서 퍼져 나가게 되었다. UNIX다른 컴퓨터의 시스템 프로그램과는 달리 일반인에게 공개함으로써 미국의 각 대학과 여러 기업체로 널리 퍼지게 되었다.  주로 연구와 학습을 목적으로 대학이나, 연구소 등에 무료로 배포되었고, 이를 이용하는 프로그래머들 또한 자연스럽게 서로에게 필요한 프로그램을 공유하는 공동체 분위기가 조성되어 있었다. 이후 UNIX는 많은 대학들과 연구원들에 의해 연구되어 마침내 상업 시장에 진출하기에 이르렀고, Berkeley Unix(BSD), SYSV와 같은 계열로 분화되고, SunOS, OSF/1.AIX, HP-UX, Solaris, IRIX, SCOUNIX등과 같은 다양한 버전의 유닉스 운영체제들을 탄생시키는 모체가 되었다.

 

이후 유닉스는 크게 2개의 계보로 발전하였는데, AT&T의 상업용 유닉스로서 SYSTEMV 계열과 학문적 연구 목적인 버클리 대학의 BSD(Berkeley Software Distribution) 계열로 나뉘어 발전하였다. 요즘은 두 가지 계열의 장점들을 결합하여 통합된 형태로 각 회사의 유닉스 운영체제로 사용하고 있다.

 

소 주제 3. Unix 특징

 

1. 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제

명령어를 입력 받기 위해 쉘 프롬프트($)를 화면에 나타난다. 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하고 다시 새로운 명령을 받기 위해 대기하고 있다는 표시로 쉘 프롬프트($)를 나타낸다.

 

2. 다중 작업 기능(multi-tasking)

한번에 하나 이상의 작업을 수행할 수 있다.

 

3. 다중 사용자 기능

여러 단말기(키보드와 모니터)가 하나의 컴퓨터에 연결되어 각 단말기에서 사용자들이 프로그래밍을 하거나 파일 편집을 동시에 수행할 수 있다. , 여러 사람이 동시에 유닉스 시스템을 사용하여 개개의 작업을 수행할 수 있다. 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합하다.

 

4. 크기가 작고 이해하기 쉬움.

 

5. 이식성 (하드웨어 종류에 상관없이 운영되는 특성)

유닉스는 90% 이상이 C 언어로 구현되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다. 시스템 프로그램이 모듈화 되어 있어 다른 하드웨어 기종으로의 이식이 용이하다. , 다른 기종으로 이식할 경우 하드웨어에 의존하는 부분인 어셈블리어로 작성된 부분을 새로운 환경으로 변환시키고 C 언어로 구현된 나머지 부분을 재 컴파일하여 실행하면 된다.

 

6. 계층적 트리 구조 파일 시스템

유닉스는 계층적 트리 구조를 가짐으로써 파일 관리에 용이하다.

 

7. 개발 도구

프로그래머가 여러가지 언어(Fortran, C, C++ )를 사용하여 프로그래밍할 수 있도록 많은 컴파일러(compiler)를 제공하고 있기 때문에 전문적인 프로그램 개발에 용이하다.

 

8. 다양한 유틸리티 프로그램

유닉스 시스템은 서로 다른 컴퓨터와 통신 가능하도록 하기 위해 여러가지의 통신 유틸리티 등 다양한 유틸리티 프로그램을 제공한다.

 

8. 가상 메모리

한정된 메모리를 갖는 시스템에서 실제 메모리보다 더 큰 프로그램을 수행하기 위해 가상 메모리(virtual memory) 기법을 사용한다.

반응형

댓글