Fascination
article thumbnail

Chapter 01. OS? Oh Yes!

누워서 보는 운영체제 이야기 - 김주균 교수님


# 1.1 OS?

- 운영체제의 정의

  • 컴퓨터의 여러 응용 프로그램을 설치되게 해 주고, 여러 가지 장치를 효율적으로 작동하도록 하며, 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해 주는 프로그램의 집단
  • 컴퓨터의 사용자와 하드웨어 사이에서 가교(interfacing) 역할을 하는 프로그램
  • 하드웨어 그 자체가 가지고 있는 능력을 십분 발휘되도록 제어해 주는 프로그램
  • 컴퓨터가 컴퓨터 밖의 세계와 상호 동작하는 방법을 정의한 프로그램

- 운영체제의 역할

  • 운영체제 역할: 사용자 인터페이스(User Interface)와 자원 관리(Resource Management)를 위한 프로그램 집합
  • 시스템 프로그램: 컴퓨터 하드웨어에 의존적이며 그 시스템을 정상적으로 작동시키기 위해 필요한 프로그램
  • 운영체제와 시스템 프로그램은 그 기능을 어떻게 보느냐에 따라 명확히 구분할 수 없는 경우가 많음
  • 운영체제와 시스템 프로그램 집단을 합쳐서 시스템 소프트웨어라 하고, 응용 프로그램 집단을 응용 소프트웨어로 분류함

 

 

 

컴퓨터 시스템의 구성 요소

  • 다중 사용자(Multiuser) 컴퓨터 시스템: 다수의 사용자가 한꺼번에 컴퓨터와 접속되어 각자 동시에 다양한 일을 할 수 있는 환경
  • 여기서 다룰 운영체제는 다중 사용자 시스템의 운영체제에 관한 것 → PC의 운영체제에도 적용됨
  • 운영체제: 하드웨어 시스템하고 사용자 사이의 다리 역할(interfacing)
  • (a), (b), (c) 는 모두 그림이 다르지만 운영체제의 위치를 보면 동일한 역할을 하고 있는 것을 알 수 있음

 

# 1.2 옛날에 운영체제는?

- 운영체제: 하드웨어 X, 프로그램의 집단

 

1) 수동식 계산기 (calculator ≠ computer)

  • 기원전 3000년경 중국에서 발명된 주판
  • 자연대수의 창시자 존 네피어가 1600년대에 창안해 곱셈과 나눗셈을 쉽게 할 수 있도록 한 존 네피어 봉
  • 프랑스의 수학자이며 철학자인 파스칼(Pascal)의 톱니바퀴로 연동되는 계산기
  • 1673년 독일의 수학자인 라이프니츠(G.W.Leibnitz)에 의해 만들어진 계산기
  • 즉, 운영체제라는 개념이 없었음

 

2) 자동계산기 시대

  • 영국의 수학 교수인 배비지(C.Babbage)에 의해 제작된 증기 기관으로 작동되는 해석 장치(Analytical Engine)
  • 에이다(Ada Augusta, Lovelace)부인은 최초로 수학 문제를 풀 수 있는 프로그램을 만들었으며 지금 쓰이고 있는 고급 프로그램 언어인 Ada는 이 이름을 따서 붙여짐
  • 미 인구 통계국 직원 홀러리스(H.Hollerith)가 만들어 1970년 초반까지 입력 수단으로 많이 쓰였던 천공기(홀러리스 카드)
  • Mark Ⅰ (1043) - 3천개의 전기 스위치와 4마력의 모터를 동력으로 23자리 숫자의 가감을 매초 3회, 곱셈은 3초에 1회씩 계산이 가능 / 높이가 2.4m, 길이가 17m
  • 운영체제라는 것은 존재하지 않았지만, 운영체제가 하는 일들은 모두 소수의 기술자에 의해 수동으로 조작

 

2.1) 1세대 운영체제 (1940년대 - 1950년대)

  • 진공관 컴퓨터의 시기
  • 45개 진공관을 이용한 ABC 컴퓨터(1942년)
  • 1946년 - ENIAC(Electronic Numerical Integrator and Caculator)
  • 1949년 - 폰 노이만의 2진 부호 체계를 채택하여 영국의 모리스(Maurice)와 윌키스(Wilkes) 교수에 의해 EDSAC 제작
  • UNIVAC- Ⅰ : 1951년 Remington-Rand사 제작
  • IBM 701 : 1953년 제작. 초당 16000회의 가산 가능
  • IBM 701에 와서야 운영체제라 할 수 있는 기능들이 장착됨(일괄 처리 시스템: Single-stream Batch Processing Systems)

 

+) 일괄처리 시스템(Batch Processing Systems)

  • 일괄처리: 다수 개의 프로그램을 읽어 저장해 놓되, 한 번에 한 개씩의 프로그램을 실행시켜 주는 방식
  • 일괄처리 과정: 프로그램들은 천공카드로 만들어지며, 만들어진 프로그램들을 카드 판독기(Card Reader)가 읽어 저장 → 카드 판독기는 천공카드들을 수직으로 쌓아 놓고 빠르게 읽음
  • 처리해야 할 작업(Job)들을 한꺼번에 여러 개 준비시켜 놓고(Single-stream) 다음 작업의 처리를 자연스럽게 연결되도록 하면 운영체제에서 사용하는 용어를 빌어 Job-to-job의 Transition을 Smooth 하게 한다라고 함
  • 초창기 Batch: 한 개의 작업이 시작되면 그 일이 완전히 끝날 때까지 다른 작업은 기다려야 한다(다른 작업에게 CPU가 할당되지 않음) 라는 뜻
  • 읽어 둔 여러 개의 job들은 하드(disk)에 저장되며 시작할 작업은 메인 메모리에 올라가서 실행됨
  • 이후, 일괄처리를 하되 다중 프로그래밍을 하는 Batch로 발전
  • 작업이 끝날 때까지 사용자의 중간 개입이 허용되어있지 않음

 

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

  • 트랜지스터 컴퓨터
  • 1959년 UNIVAC- Ⅱ : 자기코어 기억장치를 주기억 장치로 사용
  • 1960년대 초 IBM 1400 시리즈: 진공관으로 만들어진 컴퓨터에 비해 100배 이상 축소, 속도는 100배 이상 빠름. 또한 자기 디스크 팩(Magnetic Disk Pack/ 보조 기억 장치)이 등장하였으며 소프트웨어로는 Assembly 언어의 등장과 함께 FORTRAN, COBOL 등이 소개됨
  • 운영체제는 컴퓨터에 장착되어 있는 다양한 주변기기들을 효율적으로 관리하는데 관심을 가졌으며, 사용자에게도 보다 나은 서비스를 제공하기 위한 많은 방식 개발 - 다중 프로그래밍 시스템, 다중처리 시스템, 시분할 시스템, 대화식 시스템, 실시간 시스템
  • 1세대 운영체제의 문제점: 한 번에 한 개의 작업을 처리해 주는 것 → CPU가 놀게 되는 경우 발생
  • 내장 프로그램 개념(Stored Program Concept): 어떤 작업도 실행되기 위해서는 주기억 장치(Main Memory)에 있어야 함
  • 다중 프로그래밍 시스템(Multiprogramming System): 일괄 처리 시스템의 단점을 보완. 다수(Multi) 개의 작업(Program)이 같이 주기억 장치에 있도록 한 방식이며 한 작업을 처리하는 도중 입출력이 발생하면 바로 다른 작업을 처리 → 폰 노이만이 말한 내장 프로그램 개념 필요
  • 다중처리 시스템(Multiprocessing System): 여러(Multi) 개의 처리장치(Processor)를 장착하여 동시에 여러 작업을 병렬(Parallel/CPU 여러 개가 동시에 각자 다른 task를 수행)로 실행하여 처리 속도를 최대한 높이는 방식
  • 다중 처리를 위해 다중 프로그래밍은 필요할 수밖에 없음
  • 시분할 시스템(Timesharing System): CPU가 처리해 줄 수 있는 시간(Time)은 작업 수에 맞춰 분할하여 각자에게 일정량만큼 씩 분배(Share)하여 번갈아 가며 처리. 실제로는 많은 작업이 있음에도 불구하고 각 작업은 CPU가 자신의 일을 계속해서 처리해 주고 있다는 생각을 함 → 사용자에게 바로바로 응답해 줄 수 있는 장점을 가지게 됨
  • 시분할 시스템이 효과적으로 운영되기 위해서는 다중 프로그래밍 시스템이 먼저 필요
  • 대화식 시스템(Interactive System): 시스템과 사용자가 모니터와 입력 장치를 통해 마치 대화하듯이 일을 처리해 나가는 방식 → 작업의 진행 사항을 체크하기 위해 모니터(Monitor)가 필요하게 되고, 또 계속해서 다음 일을 의뢰하기 위해 키보드(Keyboard)나 마우스(Mouse) 같은 입력 장치가 필요
  • 대화식 시스템을 위해서는 시분할 시스템이 필요

 

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

  • 직접회로(Integrated Circuit, IC) 사용
  • 부피와 무게를 혁신적으로 줄이고 속도와 신뢰도는 1000배 이상 발전
  • 미니 컴퓨터, 범용 컴퓨터 등장 - DEC의 미니 컴퓨터, IBM 360 시리즈
  • 다중모드 시분할 시스템 등장 - 일괄 처리, 시분할, 실시간 작업을 모두 지원
  • 근거리 통신망(Local Area Network, LAN), 소프트웨어 공학, 보안 등
  • UNIX 등장 - Open Source로 활발한 연구가 되었지만 지금은 Open Source가 아님 ex) Linux - 1990년대 초 개발

 

2.4) 4세대 운영체제

  • 마이크로프로세서: 연산장치와 제어장치 그리고 여기에 필요한 레지스터들을 하나의 칩에 집적시켜 넣는 데 성공한 것
  • 마이크로프로세서의 개발로 개인용 컴퓨터가 본격적으로 보급
  • 분산(Distributed) 및 병렬(Parallel) 처리 시스템 등장
  • 이기종 간의 자유로운 통신, 데이터베이스, 인공지능 등장

 

# 1.3 Oh Yes!

1) OS 안에는 어떤 것들이?

운영체제의 5가지 구성 요소

사용자 인터페이스는 여러 가지 말로 불림

shell: unix에서 사용하는 명칭

command procedure : dec에서 부르는 명칭

command interpreter: 다른 운영 체제에서 부르는 명칭

  • 쉘(shell): 사용자나 응용 프로그램이 운영체제와의 의사소통을 위해 필요한 요소 ex) 정보 교환, 아이콘이나 메뉴를 클릭해서 프로그램 실행
  • 장치 관리: 시스템에 있는 주변 장치(키보드, 모니터, 프린터, 하드디스크) 제어
  • 파일 관리: 사용자 또는 프로그래머로 하여금 파일을 만들고, 지우고, 수정하고 이름을 부여하며, 디렉터리 등을 관리
  • 메모리 관리: 주기억 장치의 관리, 실행될 프로그램을 위해 주기억 장치의 일정 부분을 할당하거나 주기억 장치 안에 있는 프로그램들의 경계를 설정하여 서로 침범하지 못하게 하는 등의 일 처리
  • 처리기 관리: 컴퓨터의 처리기 즉, CPU의 처리 능력을 각 작업에 효과적으로 배분토록 관리
  • 이들 관리 부분들은 밀접한 연관을 가지고 실행됨

 

2) OS는 컴퓨터의 어디에 있을까?

▶ 운영체제는 커널(Kernel), 쉘(Shell)과 유틸리티 프로그램(Utility Program)으로 나뉨

커널

  • 운영체제의 각종 기능들 중 사용자와 실행 프로그램을 위해 매우 빈번하게 사용되는 부분
  • 컴퓨터가 처음 부팅(Booting)될 때에 주기억 장치에 적재되어 시스템의 운영(Shutdown)될 때까지 계속해서 주기억 장치에 남아 있게 되는 부분
  • memory resident part of os라고도 부름
  • 커널을 주기억 장치에 상주시키는 이유: 운영체제 중에서 빈번히 그리고 빨리 실행돼야 할 프로그램을 디스크에 두었을 경우 이들이 실행될 때마다 주기억 장치로 불러들여야 할 텐데 이 일은 결국 디스크와 주기억 장치 사이의 입출력에 해당하는 일이며 많은 시간을 요구하게 되어 시스템의 성능을 매우 떨어뜨리기 때문임.
  • OS: 커널 + 나머지 유틸리티 부분
  • 운영체제를 전부 커널로 구성하지 못하는 이유: 메모리(주기억 장치)의 한정적인 용량 때문인데, 한정된 용량의 주기억 장치가 운영체제의 거의 대부분을 차지할 경우 사용자 프로그램들이 올라올 공간이 매우 줄어들게 되어 많은 사용자 프로그램이 효과적으로 실행되지 못함. 따라서 운영체제 프로그램 중 자주 사용되지 않는 부분은 디스크에 두고 필요할 때 잠시 주기억 장치에 넣어 실행시킨 후 다시 디스크로 보냄으로써 사용자 프로그램을 위한 주기억 장치의 공간을 확보하게 되는 것
  • 운영체제의 핵심이며 핵(Neucleus), 관리자(Supervisor), 메모리 상주(Memory Resident) 프로그램이라고도 부름
  • IO.SYS와 MSDOS.SYS 그리고 COMMAND.COM와 같은 프로그램

▶ 유틸리티 프로그램: PRINT.EXE, FORMAT.EXE, BACKUP.EXE와 같은 프로그램

 운영체제에서 커널과 유틸리티를 구분 짓는 명확한 잣대는 없음

▶ 근래에는 커널 중에서도 좀 더 빠른 실행이 요구되거나 높은 수준의 보호가 필요한 프로그램들은 아예 마이크로 프로그래밍(micro-programming)하여 ROM이나 PLA(Programmable Logic Array)와 같은 칩의 형태(펌웨어/firmware)로 만들어 놓기도 함

 

+) 듀얼 모드(dual mode)

  • 대부분의 컴퓨터 시스템에는 두 개의 모드, user mode와 kernel mode를 정해 놓고 각각의 프로그램은 이 중 하나의 모드에서 실행되도록 함
  • kernel mode: 운영체제가 실행되는 모드, 모든 명령이 수행 가능
  • user mode: 사용자 프로그램, 응용 프로그램 등이 실행되는 모드
  • 목적: 시스템의 보호, 장치들의 효율적인 관리
  • 시스템 호출: 사용자 프로그램이 운영체제의 어떤 서비스를 요구할 때 커널을 호출하는 것. 운영체제는 사용자가 요구한 서비스를 커널 모드에서 실행한 후, 사용자 모드에서 사용자 프로그램이 실행되도록 리턴

 

3) 윈도에서는?

 

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!