티스토리 뷰

CS/OS

1. 들어가기 전에①

Sueaty 2020. 1. 8. 20:03

이 글은 본격적으로 운영체제에 대해 다루기 이전에 미리 상식적으로 알면 좋을 것 같은 내용들을 다루겠습니다. OS? Oh Yes! 서적 기반, 숙명여대 김주균 교수님 강의, 위키피디아 등을 정리했습니다. 공부한 것을 정리하는 형식으로 작성되었으므로 오류가 있을 수 있습니다. 오류 발견시 댓글로 꼭 말씀해주세요! 시작해볼까요?

시작 전 (잡)여담

지난 학기 싱가포르의 NTU로 교환학생을 다녀왔고, 다음 학기 역시 NTU에서 보내게 되었습니다. 그리 대단한 것을 하고 오지는 않았지만 개인적으로 좋은 습관하나는 들이고 온 것 같습니다. 세계 10, 11위를 다투는 학교의 수업은 어떠할까? 라는 질문을 해결하기 위해 떠난 곳이었는데 교수님들의 강의력(을 제가 논할 것은 아닙니다만 감히 해보자면)이 뛰어난 것은 아니다라는 결론을 내리고 귀국했습니다. 그러나 하나 확실한 것은 학생들이 더 깊이 주도적으로 공부할 것을 권한다는 것입니다. 그래서 전 각 전공서적들을 70% 이상은 다 읽게 되었습니다.(나머지 30%는 교수님들께서 빼신.... 아 더 공부할 의지가 없었던 것...은...ㅎ) 

 

그렇게 방학 동안 귀국한 전, 졸업요건을 채우기 위해 지난 학기에 듣지 못한 운영체제를 공부하게 되었습니다. 숙명여대 김주균 교수님께서 집필하셨으며 직접 강의도 하시는데, 계절을 신청해보니 타교생들도 듣더군요. 하... 계절학기 수업이라 20명인가 기준 인원 이하로 신청하면 절대평가라고 했는데 인원이 30명 가량 되서 상대평가가 되버린다네요. 아니 계절을 무슨 30명이나 듣습니까?!... 각설하고 본문으로 들어가죠.

운영체제, 뭐하는 놈인고?

컴퓨터를 사면 당연히, 기본적으로 설치가 되어 있어서 미처 눈치채지 못했던 프로그램이 운영체제 입니다. '엥?' 싶으셨나요? 흔히 PC(Personal Computer... 나중되면 Program Counter랑 헷갈린단 말이에욧!)를 사게 될 경우 Windows, MacOS, Linux라는 이름으로 있던 그 프로그램들이 운영체제입니다. 즉,

운영체제란, 컴퓨터의 여러 응용 프로그램을 설치되게 해 주고, 여러가지 장치를 효율적으로 작동하도록 하며, 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해주는 프로그램의 집단

을 뜻합니다. 지금은 너무 심플하게 설명해 놓았는데, 이후로 어려운 내용들이 나올것이니 미리 고생하지 맙시다.

사용자와 컴퓨터 사이에서 운영체제의 위치

 [ 운영체제 ≠ 시스템 프로그램? ] 

저는 운영체제가 대략적으로 무엇인지는 알고 있었는데 시스템 프로그램과  헷갈리더라구요. 왜냐하면 저는 학교에서 배울 때 '리눅스 프로그래밍'이라는 수업 이후 '시스템 프로그래밍'이라는 수업을 듣게 되어있는데 두 수업 모두 Linux라는 운영체제를 다루는 수업이었기 때문이죠. 그런데 이 두 프로그램은 그 기능을 어떻게 보느냐에 따라 명확히 구분할 수 없는 경우가 많다고 하네요.

**시스템 프로그램 : 컴퓨터 하드웨어에 의존적이며 그 시스템을 정상적으로 작동시키기 위해 필요한 프로그램

운영체제의 발자취

 1. 1세대 운영체제(1940년대 ~ 1950년대) 

1세대 컴퓨터는 진공관 컴퓨터입니다. 세계 최초의 컴퓨터 ENIAC 이후 EDSAC이 제작되었고 이어서 UNIVAC-I, IBM 701등이 따라 등장했습니다. EDSAC 때는 프로그램을 스위치나 버튼의 조작을 통해 기계어로 만들어야 해서 운영체제가 필요가 없었습니다. 그러나 IBM 701에 와서 일명 1세대 운영체제라고 할 수 있는 기능들이 장착되었습니다. 즉, Single-stream Batch Processing System(일괄처리 시스템)이 등장한 것입니다.

 

일괄처리란 다수 개의 프로그램을 읽어서 저장은 해 놓지만 실행은 한 번에 한 개씩 하는 방식입니다. 당시는 천공카드를 썼으니, 천공카드를 넣어서 읽히고, 저장시키고, 실행시키는 것을 반복하기 보단 한 번에 쫘라락 넣은 후 읽고, 저장을 하면 실제 작업의 처리(실행)들이 자연스럽게 연결됩니다. Batch한 개의 작업이 시작되면 그 일이 완전히 끝날 때 까지 다른 작업은 기다려야 한다는 뜻입니다. 또한 해당 작업이 끝날 때 까지 사용자의 중간 개입이 허용되지도 않습니다. 아 그런데 21세기에 사는 사람으로써 이 batch system... 뭔가 손해보는 기분입니다. 컴퓨터 성능의 핵심인 CPU가 한 작업이 처리될 때까지 대기를 하고 있으니 낭비되기 때문입니다. 이 문제의 해결 방법은 2세대 운영체제에서 확인할 수 있습니다.

 

 2. 2세대 운영체제(1960년대 전반기) 

2세대 컴퓨터의 가장 큰 특징은 트랜지스터 컴퓨터라고 할 수 있습니다. 사실 오늘날 운영체제를 구성하는 많은 부분의 연구나 개발이 이 시기에 이루어졌다고 할 수 있습니다. 이 때의 운영체제는 컴퓨터에 장착되어 있는 다양한 주변기기들을 효율적으로 관리하는데 관심을 기울였고 조금 더 사용자 친화적인 서비스를 제공하기 위해 많은 방식들이 개발되었습니다. 그 대표적인 것들이 다음과 같은 것들입니다.

  • 다중 프로그래밍 시스템(Multiprogramming System)
  • 다중 처리 시스템(Multiprocessing System)
  • 시분할 시스템(Timesharing System)
  • 대화식 시스템(Interactive System)
  • 실시간 시스템(Realtime System)

다중 프로그래밍 시스템은 다수개의 작업이 같이 주기억 장치에 있도록 한 방식입니다. 위의 Batch system이 CPU가 하나의 작업을 위해 쓰여야 하는 것이 문제라면, CPU가 기다리는 상황에서 다른 작업들을 처리하는데 쓰면 프로그램이 실행되기 위해서는 우선 main memory에 올라가 있어야 하므로 다중 프로그래밍 시스템은 여러 작업이 main memory에 적재되어 있습니다.

 

다중처리 시스템은 여러개의 처리장치를 장착하여 동시에 여러 작업을 명렬로 실행하여 처리 속도를 높이는 방식입니다. 다중처리를 위해서는 당연히 다중 프로그래밍 시스템이 지원되어야 합니다.

 

시분할 시스템은 CPU가 처리해줄 수 있는 시간을 작업의 수에 맞게 분할하여 각 작업에게 일정량만큼 분배하여 번갈아 가며 처리가 가능한 방식입니다. 시분할 시스템이 효과적으로 운영되기 위해서는 앞서 설명한 다중 프로그래밍 시스템이 선만족 되어야합니다.

 

대화식 시스템은 시스템과 사용자가 모니터와 입력장치를 통해 마치 대화하듯 일을 처리해 나가는 방식입니다.

 

 3. 3세대 운영체제(1960년대 후반기 ~ 1970년대) 

3세대 컴퓨터의 가장 큰 특징은 IC (Integrated Circuit, 집적회로)입니다. 컴퓨터의 부피가 줄게되는 등 하드웨어의 발전이 소프트웨어의 발전도 촉진시켰습니다. 이 시기에 Multimode Time Sharing System(다중모드 시분할 시스템)이 소개되었고 1969년도에는 UNIX가 출현했습니다.

 

 4. 4세대 운영체제(1970년대 후반기 ~ 현재) 

4세대 컴퓨터는 고밀도 집적회로의 발전으로 컴퓨터의 제조기술과 이용분야에 커다란 진화가 이루어졌습니다. 또한 micro-processor으 ㅣ개발로 PC가 본격적으로 보급이 되는데 큰 기여를 하였습니다. 다양한 분야에서 연구도 이루어지는데, 분산/병렬 처리 시스템, 기종 간 통신, 인공지능 등이 있습니다.

'CS > OS' 카테고리의 다른 글

6. CPU 스케줄링  (0) 2020.01.11
5. Thread(스레드)  (0) 2020.01.10
4. Process (프로세스)  (0) 2020.01.10
3. 들어가기 전에 ③  (0) 2020.01.09
2. 들어가기 전에②  (0) 2020.01.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함