본문 바로가기

OS/운영체제론

[운영체제론] 운영체제란? 운영체제의 역사 (1) / 2021.09.17

 

 

* 참고 자료 : 운영체제론 한빛아카데미

1. 운영체제란?

1960년대에는 운영체제의 개념이 '하드웨어를 제어하는 소프트웨어' 정도였다. 그러나 컴퓨터 시스템에 대한 견해가 달라지면서 더 정확하고 풍부한 정의가 필요하게 되었다. 

현재의 운영체제는 응용프로그램이 컴퓨터 하드웨어와 상호 작용할 수 있게 해주는 소프트웨어로 주어진 입력에 맞는 결과를 보장하도록 소프트웨어와 하드웨어를 조작한다. 

또한 운영체제는 자원 관리자이다. 프로세서, 메모리, 입출력 장치, 통신 장치 같은 하드웨어 자원을 관리하고 하드웨어처럼 물리적으로 만질 수 없는 객체인 응용 프로그램들과 기타 추상적인 소프트웨어 객체들도 관리해야 한다. 

 

1. (참/거짓) 운영체제는 하드웨어만을 관리한다.
답 : 거짓. 운영체제는 소프트웨어 객체들도 관리해야한다

2. 운영체제의 주요 목적은 무엇인가?
답 : 운영체제의 주요 목적은 응용 프로그램들이 컴퓨터 하드웨어와 상호 작용하도록 돕고, 시스템의 하드웨어와 소프트웨어 자원을 관리하는 것이다.

 

2. 초기 역사 : 1940, 1950년대

1940년대에는 초기 디지털 컴퓨터들이 운영체제를 포함하고 있지 않았다. 

1950년대의 컴퓨터는 대체로 한 번에 한 가지 작업만 수행했다. (급여 대장이나 재고 목록 등) 

사용 효율을 극대화하려고 작업 간 이동을 원활하게 하는 기술(일련의 명령어)을 사용했는데 이러한 초기 컴퓨터를 단일 스트림 배치 처리 시스템이라고 한다. 1950년대의 운영체제들은 한 작업에서 다른 작업으로 전환하는 시간을 줄여주긴 했지만, 프로그래머들은 종종 메모리나 입출력 장치 같은 시스템 자원을 직접 제어해야 했다.

 

1. 어셈블리 언어가 개발된 이유는 무엇인가?
답 : 어셈블리 언어는 프로그래밍 속도를 향상할 목적으로 개발되었다. 프로그래머는 어셈블리 언어를 통해 영어와 비슷한 약어들을 사용하여 특정 명령어들을 나타내고, 이러한 약어를 기계어 명령어 보다 훨씬 쉽게 인지할 수 있다.

2. 1950년대에 프로그램의 크기와 기능이 제한된 이유는 무엇인가?
답 : 당시에는 메모리가 상대적으로 비싼 편이어서 컴퓨터의 메모리 용량이 제한적이었고, 결과적으로 프로그램 크기도 제한되었다.

3. 1960년대

1960년대 역시 배치 처리 시스템이지만 여러 작업을 한 번에 실행하면서 컴퓨터 자원을 더 효율적으로 사용했다.

특정 작업이 주변 장치를 사용하고 있을 때 다른 작업에서 프로세서를 사용할 수 있게 해서 자원 활용도를 높였다. 주로 프로세서를 사용하는 작업을 프로세서 중심 작업이라 하고 주로 주변 장치를 사용해 입출력하는 시간이 많이 드는 작업을 입출력 중심 작업이라고 한다. 운영체제 설계자들은 이를 염두에 두고 한 번에 여러 작업을 처리하는 멀티프로그래밍 시스템을 만들었다. 이로써 운영체제는 한 가지 작업을 처리하는데서 몇 가지 작업을 동시에 처리하는 방향으로 발전했다.

또한 여러 사용자가 동시에 컴퓨터와 상호 작용하게 할 목적으로 시분할 시스템이 개발되었다. 시분할 시스템 중 다수가 배치 처리와 함께 산업 공정 제어 시스템 등과 같은 실시간 응용 프로그램을 동시에 지원하는 시스템인 멀티모드 시스템이었다.

 

4. 1970년대

1970년대 시스템은 주로 멀티모드 멀티프로그래밍 시스템으로, 배치 처리와 시분할, 실시간 응용 프로그램을 지원했다. 미국에서 컴퓨터 간 통신이 점차 증가해 국방부의 TCP/IP 통신 표준이 활성화되었고 특히 국방 분야와 대학교 컴퓨팅 환경을 중심으로 민간에서 사용하기 시작했다. 또한 컴퓨터 간 통신이 중요해짐에 따라 보안 문제가 등장했다. 암호 작성과 해독 기술이 크게 주목받기 시작했는데 1970년대에는 운영체제가 네트워킹과 보안을 아우르는 수준으로 발전했고, 상업적인 요구를 충족할 만큼 성능이 개선되었다.

 

1. 1970년대에는 어떤 발전을 통해 컴퓨터 시스템 간 통신이 향상되었는가?
답 : 네트워크 통신 분야, 특히 대학교와 국방 컴퓨팅 환경에서 DoD의 TCP/IP 표준을 널리 채택했다.

2. 컴퓨터 간 통신이 증가하면서 어떤 새로운 문제가 대두되었는가? 또한 이 문제를 어떻게 처리했는가?
답 : 컴퓨터 간 통신은 취약한 통신 회선을 총해 데이터들을 전송했기 때문에 보안 문제를 야기했다. 따라서 암호화 기법을 통해 의도한 수신자 외에는 데이터를 알아볼 수 없게 하는 방법을 도입했다.

 

5. 1980년대

1980년대는 개인용 컴퓨터와 워크스테이션의 시대였다. 소형 컴퓨터의 중앙 처리 장치(CPU)인 마이크로프로세서 기술이 발전했다. 또한 소프트웨어의 발전도 있었는데 스프레드시트, 워드 프로세서, 데이터베이스, 그래픽 패키지 등의 소프트웨어는 개인용 컴퓨터 혁명을 도왔다. 개인용 컴퓨터는 익히고 사용하기가 더 쉬워졌는데, 이는 부분적으로는 윈도우, 아이콘, 메뉴 같은 가시적인 심볼을 사용한 그래픽 사용자 인터페이스(GUI) 덕분이다.

네트워크 기술의 발전도 있었다. 공중 통신망(PSTN 망 등)을 이용한 데이터 통신이 발전했으며 분산 컴퓨팅 환경, 즉 독립적인 컴퓨터 여러 대로 공동 작업을 수행하는 일은 클라이언트/서버 모델에서 보편적인 형태가 되었다.

 

1. 애플의 매킨토시 덕분에 대중화된 개인용 컴퓨터는 어떤 면에서 배우기 쉽고 사용이 편리했는가?
답 : GUI는 사용하기 쉽고 응용 프로그램들이 일관성 있는 인터페이스를 제공할 수 있게 하여 개인용 컴퓨터 사용을 촉진했다. 일관성 있는 인터페이스 덕분에 사용자들이 다른 응용 프로그램도 쉽고 빠르게 배울 수 있게 되었다.

2. (참/거짓) 서버는 클라이언트가 될 수 없다.
답 : 거짓. 컴퓨터 한 대가 클라이언트인 동시에 서버가 될 수 있다.

 

6. 인터넷과 월드 와이드 웹의 역사

1960년대 후반, 미 국방부의 ARPA(Advanced Research Projects Agency)ARPAnet을 구현했는데, 이는 오늘날 사용하는 인터넷의 시조가 되었다.

ARPAnet은 중앙 집중적인 통제 없이 작동하도록 설계되었는데, 이는 네트워크의 일부에 장애가 발생해도 우회경로를 통해 데이트를 전송할 수 있음을 의미한다.

ARPAnet을 이용해 통신하기 위한 통신 규약, 즉 프로토콜은 TCP/IP이다. 이 프로토콜은 오류 없는 전송을 보장했다.

결국 정부 기관에서 인터넷을 상업 목적으로 활용하는 것을 허가하게 되었는데 처음에는 이 결정을 우려하는 목소리가 많았으나 우려와는 달리 결과적으로 인터넷의 대역폭이 엄청나게 증가했으며, 하드웨어와 통신비용이 감소했다.

월드 와이드 웹 / World Wide Web (WWW) 

1989년에 CERN의 팀 버너스 리는 하이퍼링크 문서를 통해 정보를 공유하는 방법을 개발하기 시작했다. 버너스 리는 이 신기술을 구현하려고 HTML을 만들었으며 이에 더해 HTTP를 사용해 월드 와이드 웹이라는 하이퍼텍스트 정보 시스템의 통신 근간을 만들고자 했다. 월드 와이드 웹 덕분에 컴퓨터 사용자들은 거의 모든 주제에 대해 멀티미디어 기반 문서를 검색하고 조회할 수 있게 되었다.

 

1. ARPAnet은 전통적인 컴퓨터 네트워크와 어떻게 달랐는가? 가장 큰 장점은 무엇인가?
답 : ARPAnet은 중앙 집중식이 아니라서 네트워크의 일부가 손상되어도 다른 경로로 정보를 보낼 수 있었다.
가장 큰 장점은 이메일을 통한 빠르고 쉬운 의사소통 능력이다.

2. 버너스 리가 인터넷을 통한 데이터 공유를 장려할 목적으로 개발한 것은 무엇인가?
답 : 버너스 리는 HTML과 HTTP를 개발해 월드 와이드 웹의 가능성을 열었다.

 

7. 1990년대

1990년대의 하드웨어 성능은 프로세싱 파워와 저장공간의 증가를 기반으로 기하급수적으로 발전했다.

또한 월드 와이드 웹의 탄생으로 분상 컴퓨팅이 폭발적으로 증가했다. 하이퍼링크를 통해 정보에 접근하며, 멀티미디어 기반 문서를 용이하게 검색하고 조회할 수 있게 되었다.

마이크로소프트는 윈도우 운영체제를 개발하였고 사용자 친화적인 인터페이스와 기능들을 선보여 굴지의 기업으로 성장했다.

 

객체 기술 :

객체지향 기술이 컴퓨터 분야의 여러 영역에서 유행하기 시작하였는데 객체 지향 프로그램의 등장은 컴포넌트의 재사용을 용이하게 하여 개발 시간을 단축하였으며 객체 지향 운영체제의 등장으로 기존 운영체제보다 유지보수와 확장이 용이하게 되었다.

 

오픈 소스 운동 : 

1990년대에는 무료 및 오픈 소스 소프트웨어가 점차 보편화되었다. 오픈 소스 소프트웨어는 소스 코드와 함께 배포하기 때문에 개인이 살펴보고 수정한 후 컴파일하고 실행할 수 있다. 예를 들어 리눅스 운영체제와 아파치 웹 서버는 모두 오픈 소스이다.

 

1. 객체지향 기술은 운영체제에 어떤 영향을 미쳤는가?
답 : 객체지향 기술 덕분에 운영체제 설계자들은 새로운 컴포넌트를 개발할 때 기존 객체들을 사용할 수 있게 되었다. 또한 쉽게 모듈화 해서 운영체제가 새로운 이기종 아키텍처들을 지원할 수 있게 했다.

2. 오픈 소스 개발의 이점은 무엇인가?
답 : 오픈 소스 소프트웨어는 개발 커뮤니티에 속한 모든 사람이 수정할 수 있다. 사람들이 끊임없이 테스트하고 디버깅하기 때문에, 미묘한 버그까지 발견하고 수정할 확률이 훨씬 높다. 또한 개인 사용자나 기관이 자신들에 맞는 특별한 요구를 반영해 소프트웨어를 커스터마이즈 할 수 있게 한다.

 

8. 2000년 이후

2000년 이후 들어 현재까지 네트워크 등을 통해 두 독립적인 응용 프로그램을 서로 연결하는 소프트웨어인 미들웨어의 역할이 아주 중요해졌다. 미들웨어는 대규모 전산 시스템을 분산 컴퓨팅 환경에서 구현할 때 발생되는 이종 네트워크 간의 프로토콜 인터페이스 문제, 분산 환경하에서의 시스템 운영 문제, 이기종 데이터베이스 간의 접근 문제 등을 해결할 수 있다. (예) CATV or DSL 등과 연결된 인터넷을 통해 서버에 접근

프로그래밍 언어도 보완이 되었는데, 한 번에 한 가지 계산을 지정하는 순차적 프로그래밍 언어가 이제는 자바와 같은 병행 프로그래밍 언어로 보완되었다. 자바는 스레드를 사용해 병렬 계산을 정의할 수 있는 메커니즘을 제공한다.

또한 점차 많은 시스템에서 고도 병렬성을 보이고 있다. 고도 병렬성이란 프로세서를 다수 보유해 여러 독립적인 계산을 병렬로 수행하는 것으로, 지난 60여 년 동안 사용해온 순차적 컴퓨터 방식과는 근본적으로 다른 개념이다.