- 운영체제의 정의와 목표를 알고 기능을 간단히 이해한다.
- 운영체제가 없던 시절에서 운영체제가 생겨나는 태동 과정을 앎으로써
운영체제의 발단과 역할을 이해한다.- 원시 운영체제 이후 운영체제의 발전 과정을 이해한다.
- 다중프로그래밍의 출현이 가져온 컴퓨터 시스템과 운영체제의 발전과 영향을 이해한다.
- 운영체제의 종류의 특징을 간단히 이해한다.
원시 운영체제 이후 운영체제의 발전 과정에서 다중프로그래밍의 출현이 컴퓨터 시스템에 지대한 영향을 끼침
1. 운영체제 정의
컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중계 역할을 하면서,
프로그램 실행을 관리하고 제어하는 시스템 소프트웨어
- 운영체제는 컴퓨터가 아님
- 운영체제는 실체가 있는 소프트웨어
컴퓨터가 켜질 때 처음으로 적재되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어
컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어
2. 컴퓨터와 운영체제, 그리고 사용자
크롬, 아래한글, pdf 등의 응용 프로그램(소프트웨어)들이 하드웨어에 접근하기 위해서는 반드시 운영체제에 요청을 해야 함자원에 대한 접근 권한은 운영체제에게만 있음
3. 운영체제의 정의에서 핵심 단어
1.운영체제는 모든 컴퓨터 자원(resource) 관리
자원
- 하드웨어 자원: CPU, 캐시나 메모리, 키보드, 마우스, 디스플레이, 하드 디스크, 프린터
- 소프트웨어 자원: 응용프로그램
- 데이터 자원: 파일, 데이터베이스 등
- 운영체제는 자원에 대한 독점(exclusive) 권한
자원에 대한 모든 관리 권한은 운영체제에 있음
- 자원 할당, 자원 공유, 자원 액세스, 자원 입출력 등
- 예) 파일 생성: 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력
운영체제는 관리자(supervisor)
실행중인 프로그램 관리, 메모리 관리, 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 관리 등운영체제는 소프트웨어(software)
- 커널(kernal)이라고 불리는 핵심 코드
커널이란 함수들의 집합- UI/도구 프로그램들(tool/utility)
탐색기(explorer), 작업 관리자(task manager), 제어판(control panel) 등- 장치를 제어하는 디바이스 드라이버들로 구성
협의적인 의미에서의 운영체제는 커널(kernal)이라고 함
4. 운영체제의 목적과 기능
운영체제의 목적
- 사용자의 컴퓨터 관리의 편리성
- 컴퓨터의 자원 관리의 효율성
운영체제의 기능
- CPU/프로세스 관리(process management)
- 메모리 관리(memory management)
- 파일 시스템 관리(file system management)
- 장치 관리(device management)
- 네트워크 관리
- 보안 관리
- 기타 관리
사용자 관리: 사용자 계정 관리
통계: CPU, 메모리, 네트워크, 사용자의 접속 시간 등
오류 발견 및 대응
부팅(booting)
5. 운영체제와 응용소프트웨어의 차이
운영체제
- 자원을 관리하는 데에 목적이 있음
- 프로그램들에게 공통 서비스(프로세스, 메모리 등의 관리) 제공
응용소프트웨어
- 사용자의 특정 요구를 충족시키는 데에 목적이 있음
- 소프트웨어를 만든 특정 목적만을 수행함
1. 고정 프로그램 컴퓨터_1940년대
고정 프로그램 방식(fixed program computer)
- 1940년대, 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대
- 운영체제에 대한 개념 없음
- 소프트웨어와 하드웨어의 분리 개념 없음
모든 것이 하드웨어로 제작됨- 프로그래밍
종이에 프로그램을 구현하는 스위치와 전선 연결도 작성
배선판(plugboard)에 전선 연결, 프로그램을 기계에 고착시킴
하나의 명령을 구성하기 위해 여러 가닥의 전선 연결
프로그램 전체 구축에 수천 개의 전선 연결, 며칠 소요
새로운 프로그램을 작성(구축)할 때 큰 고통- 사례
1941년 독일의 Z3 computer
1944년 영국에서 독일군의 암호를 해독하기 위해 만든 Colosus
1943~1945년 미국에서 만든 최초의 전자식 컴퓨터 ENIAC(Electronic Numerical Integrator And Computer)
2. 내장 프로그래밍 방식 등장_1945년~
내장 프로그래밍 방식(stored program)
- 1945년 폰노이만에 의해 제안
- 1951년 EDVAC 컴퓨터를 만들 때 적용, 오늘날 컴퓨터의 구조
- 내장 프로그램 컴퓨터의 의미
CPU와 메모리 분리
소프트웨어와 하드웨어 분리
실행할 프로그램을 메모리에 담고, CPU가 프로그램을 실행하는 방식
고정 프로그래밍 방식에 비해 획기적인 변화
하드웨어는 변화가 없고, 실행 시키려는 프로그램만 메모리에 적재
프로그램은 입력 장치를 통해 메모리에 적재
펀치카드에 구멍을 뚫어 프로그램 작성
카드리더기로 프로그램을 메모리에 읽어들임
컴퓨터를 4개의 요소(중앙처리장치, 메모리 장치, 입/출력 장치)로 분할
- 메모리 장치(Memory Unit): 프로그램 적재
- 중앙처리장치(CPU)
제어장치(Control Unit): 메모리에 있는 명령 하나를 가지고 와서 레지스터에 저장함
연산장치(Arithmetic and Logic Unit): 실제 계산 역할을 수행
레지스터(Register): 제어장치가 가지고 온 정보가 저장되는 장소
제어장치(Control Unit)
지금 어떤 명령어를 실행할 지, 데이터를 어디로 보낼 지 결정하며 컴퓨터의 모든 부품에 신호를 보냄
제어장치의 핵심 역할
- 해독(Decode): 메모리에서 가져온 명령어(0과 1로 된 암호)를 분석하여 어떤 동작(+, save, load)이 필요한지 파악
- 제어 신호 발생: 명령어를 실행하기 위해 필요한 부품(연산장치, 메모리, 입출력장치 등)에 움직이라는 신호를 보냄
- 흐름 제어: 컴퓨터 부품들이 서로 충돌하지 않고 순서대로 동작하도록 데이터의 흐름을 조절
연산장치(Arithmetic and Logic Unit)
제어창치의 지시를 받아 실제 데이터를 계산하고 논리를 판단
연산장치의 기능
- 산술 연산(Arithmetic Operation): 사칙연산을 수행
- 논리 연산(Logic Operation): 참과 거짓을 판단(AND, OR, NOT, XOR 등)
레지스터(Register)
극도로 빠르고 작은 저장 장치
상대적으로 속도가 느린 RAM에서 데이터를 가져와서 연산하면
병목 현상(전체 시스템의 흐름이 어느 한 부분의 낮은 성능이나
용량으로 인해 제한되는 현상)으로 인해 컴퓨터가 느려짐.
따라서 자주 쓰는 데이터나 중간 계산 결과를
CPU와 가까운 레지스터에 두고 즉각적으로 처리함.레지스터의 종류
- PC(Program Counter): 다음에 실행할 명령어의 메모리 주소를 보관
- MAR(Memory Address Register): CPU가 데이터를 읽거나 쓰기 위해 접근하려는 메모리의 주소를 잠시 저장
- MDR(Memory Data Register): 메모리에서 읽어온 데이터나 메모리에 저장할 데이터를 잠시 보관
- IR(Introduction Register): 메모리에서 읽어온 현재 실행중인 명령어 자체를 보관
- AC(Accumulator): 연산 결과나 중간 값을 일시적으로 저장
3. 프로그램 로더의 발견_운영체제 개념의 시작_1950년대
프로그램 로딩 시대
- 운영체제 개념의 시작
IBM 701 메인 프레임
- 1954년 IBM에서 만든 첫 번째 내장 프로그래밍 방식의 컴퓨터
- IBM의 첫 번째 범용 컴퓨터
- 판매하지 않고 대여만
- 기계만 대여하고 어떤 소프트웨어도 제공하지 않았음
IBM을 701을 빌린 고객(기업)이 모든 것을 해야 했음로더 프로그램의 필요_운영체제의 싹
IBM 701 개발자의 일반적인 개발 형태
- 첫 번째 카드
24개의 명령만 작성 가능
24개보다 긴 프로그램의 작성에 2장의 카드 필요
다음 카드에 작성된 프로그램을 메모리에 적재하는 코드만 작성- 두번째 카드부터
목적하는 프로그램 작성로더 프로그램 필요
- 개발자가 프로그램을 작성할 때 마다 다음 카드에서 프로그램을 읽어들이는 첫번째 카드의 프로그램을 작성하는 시간 낭비
목적 프로그램을 읽어들이는 코드의 작성 필요
이 코드를 로더(loader)라고 부름- 로더는 모든 컴퓨터에 공통적으로 필요
로더가 운영체제로 발전
- 오늘날 운영체제의 가장 기본적인 기능?
사용자의 명령을 받아 저장 장치에 담긴 프로그램을 적재하는 기능
4. 원시 운영체제 GM OS 탄생_1955년
GM OS
- 1955년, IBM701의 고객 GM(General Motors)에 의해 개발
펀치 카드에 담긴 프로그램을 메모리에 로딩하는 로더 프로그램- 핵심 개념
로더 프로그램을 사용자 프로그램과 분리
사용자에게 로더 프로그램 작성의 번거로움 해소
로더 프로그램은 테이프에 저장, 필요할 때 마다 실행
로더를 모니터(Monitor)라고 불렀음
후세대, General Motors Operating System(GM OS)라고 불렀음GM OS는 원시적인 최초의 운영체제
- 사용자 프로그램에서 로더 프로그램 분리하고, 사용자 프로그램을 읽어 실행시켜 준다는 점
5. 최초의 운영체제 GM-NAA I/O(I/O System) 탄생_1956~1957년
1955년 GM은 IBM 701의 처리 속도를 높인 IBM 704 주문
IBM 704 컴퓨터 활용에 3가지 문제점 발견과 해결
- 개발자들은 여전히 대기 번호를 뽑고 자신의 차례를 기다림
- 비싼 컴퓨터를 많은 시간 놀리고 있다는 점
개발자가 프로그램을 실행시키기 위한 시스템 셋업하고 있는 동안, 컴퓨터는 놀게 됨- 카드 입력 장치나 테이프 입력 장치를 제어하는 프로그램 코드와 하드웨어 서비스 루틴은 개발자가 별도로 작성
최초의 운영체제 GM-NAA I/O 개발
- 1956년 GM과 NAA(North American Aviation)의 공동 개발
고가의 컴퓨터를 보다 효율적으로 사용하기 위해
IBM 701의 모니터 프로그램을 확장하여 구현- 운영체제로서의 모습 갖춤
배치 방식(batch operating system)으로 작동
여러 개발자들이 작성하여 쌓아놓은 작업들을 순서대로 하나씩 자동으로 메모리에 로딩하고 한 번에 하나의 작업만을 실행해주는 배치 운영체제
사용자 입출력을 다루는 코드 메모리에 상주(오늘날 운영체제 방식)
카드 입력 장치의 입출력, 테이프 입출력, 프린터 출력 등
모든 입출력 장치들을 제어하는 루틴들을 라이브러리 형식으로 갖추고 프로그램 사이에 공유GM NAA I/O 운영체제의 구조와 기능
GM NAA I/O의 구조
- 어셈블러 코드
사용자가 작성한 어셈블리어 프로그램을 기계어 코드로 번역하는 프로그램어셈블리어 코드 MOV AX, 10 ; AX라는 레지스터에 숫자 10을 넣어라 (Move) ADD AX, 20 ; AX에 있는 값에 20을 더하라 (Add)
- 로더 프로그램
사용자 프로그램을 하나씩 메모리에 적재- 공동 입출력 코드 및 메인 코드
메인 코드: 운영체제 시작 코드
공통 입출력 코드: 장치 입출력을 다루는 프로그램 코드
라이브러리화 되어 모든 사용자 프로그램(목적 프로그램)이 실행 시 호출하여 활용
라이브러리 개념 등장
6. 운영체제 태동의 역정
1. 운영체제 태동 시절
1세대 컴퓨터 시절 - 운영체제 암흑 시절
운영체제의 개념 없음
- 개발자가 펀치 카드에 프로그램 작성, 입력, 실행
- 컴퓨터는 한 번에 한 개의 작업만 실행
- 컴퓨터는 셋업하는 동안 많은 시간이 유휴 상태
2. 배치 운영체제
출현 배경
- 사람이 개입하는 작업 준비 단계를 컴퓨터가 대신함
프로그램 적재: 종이 테이프나 천공 카드 뭉치를 판독기에 직접 집어 넣음
컴파일러 로드: 코드를 실행하기 전, 해당 언어(FORTRAN)를 해석할 컴파일러 프로그램을 먼저 메모리에 올려야 함.
스위치 조작: 컴퓨터 전면 패널의 수많은 토글 스위치를 직접 조작하여 메모리 시작 주소를 설정하고 실행 버튼을 누름- 컴퓨터의 idle 시간을 줄여 컴퓨터의 활용률 향상
배치 운영체제 컴퓨터 시스템
- 개발자와 관리자의 구분
- 개발자는 펀치 카드를 입력 데크에 두고 결과 기다림
- 배치 운영체제는 자동으로 테이프 장치에 대기중인 프로그램을
한 번에 하나씩 적재하고 실행
3. 다중프로그래밍(Multiprogramming) 운영체제
출현 배경
- 1960년대 중반, CPU 등 하드웨어 속도 개선, 컴퓨터 가격 증가
- 프로그램의 실행 형태로 인한 CPU의 idle 시간 발생
CPU 작업-I/O 작업-CPU 작업-I/O 작업의 반복
I/O 작업이 이루어지는 동안 CPU는 놀면서 대기- CPU의 idle 시간 줄이기→CPU 활용률 증가→처리율 증가
(더 많은 프로그램 실행)을 목표로 함다중프로그래밍 기법 출현
- 미리 여러 프로그램을 메모리에 적재
- 이 때 메모리에 적재되어 동시에 실행되는 프로그램의 개수를
다중프로그래밍 정도(Degree of Multiprogrmming, DOM)이라고 함
메모리가 수행할 만큼 프로그램 적재- 프로그램 실행 도중 I/O가 발생하여 대기하게 될 때, 메모리에 적제된 다른 프로그램 실행
정의
다중프로그래밍은 여러 프로그램을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 I/O가 발생하면, 입출력이 완료될 때 까지 CPU가 메모리에 적제된 다른 프로그램을 실행하는 식으로 CPU의 노는 시간을 줄이는 기법다중프로그래밍 기법
탐구 1-1
배치 운영체제
다중 프로그래밍 운영체제
성능 비교
다중프로그래밍 도입으로 인한 이슈
1. 큰 메모리 이슈
- 여러 프로그램을 동시에 메모리에 올려놓기 위해서는
메모리의 크키 늘릴 필요2. 프로그램의 메모리 할당 및 관리 이슈
- 몇 개 프로그램 적재? 메모리 어디에 적재?
프로그램 당 할당하는 메모리 크기?3. 메모리 보호 이슈
- 프로그램이 다른 프로그램 영역을 침범하지 못 하게 막는 방법 필요
4. CPU 스케줄링과 컨텍스트 스위칭
- 실행시킬 프로그램 선택 스케줄링 필요
- 프로그램 실행 상태를 저장할 컨텍스트 정의
- 컨텍스트 스위칭 필요
5. 인터럽트 개념 도입
- 운영체제는 I/O 장치로부터 입출력 완료를 전달받는 방법 필요
6. 동기화
- 여러 프로그램이 동일한 자원을 액세스할 때 발생하는 문제 해결
7. 교착 상태 해결
- 프로세스들이 서로 상대가 가진 자원을 요청하면서
무한 대기를 교착상태 해결
컨텍스트 스위칭
A 작업이 I/O 작업을 실행 할 때, 레지스터에 저장된 정보들이 손상받지 않도록 메모리 공간에 따로 저장해두고, B 작업을 가져와서 실행함.
A 작업이 다시 CPU를 사용하게 될 때, B 작업 도중 레지스터에 저장된 값과 A 작업을 할 때 레지스터에 저장된 값을 교체하는 작업
4. 시분할 다중프로그래밍 (Time Sharing Multiprogramming) 운영체제
출현 배경
- 다중프로그래밍 운영체제와 거의 동시에 연구 시작
- 배치 처리와 당시 다중프로그래밍의 다음 2가지 문제점 인식
비대화식 처리 방식(non-interactive processing)
한 프로그램이 CPU를 잡으면, 그 프로그램이 I/O 작업을 하러 가서 스스로 CPU를 내려놓기 전 까지 다른 프로그램은 끼어들 틈이 없었음
느린 응답시간, 오랜 대기시간
프로그램을 제출하고 하루 뒤에 결과 보기
사용자의 즉각적인 대응 없음시분할 운영체제의 시작
- 1959년 MIT 대학, John McCarty 교수에 의해
- 빠른 프로그래밍 디버깅 필요
McCarty 교수가 당면한 문제였음- 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안
터미널(키보드 + 모니터 + 전화선 + 모뎀)
사용자는 터미널로 메인 컴퓨터에 원격 접속
시간을 나누어 돌아가면서 각 터미널의 명령 처리- CTSS(Compatible Time Sharing System) 시분할 시스템 개발
1962년 MIT
탐구 1-2
배치 운영체제
시분할 운영체제
A, B, C가 동일한 CPU 자원을 나눠서 사용하고 있는 상태에서,
A가 CPU자원을 사용하지 않을 때에 B나 C가 더 많이 사용하게 될 수 있음3개의 프로그램이 1초에 0.33초씩 할당받는다고 할 때,
B가 0.66, C가 0.33초를 할당받거나 하는 경우가 가능하다는 의미임이 시간은 우선순위 등을 통해 할당되며, B가 0.6, C가 0.4와 같은 방식으로도 할당하는 경우도 가능함
성능 비교
5. 개인용 운영체제
출현 배경
메인 프레임에서 미니 컴퓨터 시대로 바뀜
미니 컴퓨터 역시 한 방을 가득 채울 수준의 크기였음미니 컴퓨터에서의 시분할 시스템의 사용의 불편함
응답 속도 저하-많은 사용자로 인해 응답 속도 저하
공간 제약-터미널이 있는 전산실에서만 컴퓨터 사용 가능
개인이 집에서 터미널 장치를 사용한 것은 아니었음개인용 컴퓨터 필요성
원격 접속 없이, 가정에서, 혼자 사용개인용 컴퓨터 등장
- 마이크로프로세서 CPU 장치 개발
1971년 Intel 4004 처음 시장에 등장
개인용 컴퓨터 등장- 메인프레임이나 미니컴퓨터에 비해 저렴, 소형
- IBM은 최초의 PC를 만들 때 부터
작은 부팅 프로그램(부트스트랩 코드)을 담은
ROM(Read Only Memory)메모리를 장착함- ROM에 들어 있는 프로그램을 BIOS(Basic Input Output System)이라고 함
개인용 운영체제 등장
- 최초의 개인용 운영체제 CP/M
- 1980년 개인용 운영체제 MS-DOS 등장
6. 임베디드 운영체제
임베디드(embedded, 내장형) 컴퓨터
- 자동차, 비행기 제어 시스템, 공장, 디지털 TV, ATM기, 네비게이터, 엘리베이터, 블루레이 플레이어를 비롯한 미디어 재생기, POS 단말기, 교통신호 시스템, 셋톱박스, 게임기, 유/무선 공유기 등 가전제품이나, 산업 현장의 기계들, 상용 제품 등에 내장되어 이들 장치들의 목적을 지원하는 소형 컴퓨터
임베디드 운영체제(Embedded Operating System)
- 임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능을 수행하며, 장치를 제어하는 프로그램이 원활이 실행되도록 하는 목적
- 사례
WinCE, 여러 종류의 임베디드 리눅스
7. 모바일 운영체제
- PDA(Personal Digital Assistant)라고 불리는
Palm 탑 컴퓨터에서 시작됨
모바일 컴퓨터- 하드웨어의 급속한 발전으로 휴대 가능한 크기로 들고 다닐 수 있는 모바일 장치 혹은 모바일 컴퓨터 출현
- 스마트폰, 태블릿, 스마트시계와 같은 입는 컴퓨터(wearable computer) 등 어디서나 휴대 가능한 컴퓨터
- 터치스크린, 블루투스 장치, 전화기, 무선네트워크 장치, GPS, 사진 및 동영상 촬영이 가능한카메라, 음성 인식, 녹음기, 근거리 통신 장치, 적외선 장치, 지문 인식기, 배터리 등의 장치 내장
모바일 운영체제
- 모바일 컴퓨터 내 장치들을 구동시키고, 이들을 활용하는 다양항 응용프로그램들을 실행할 수 있도록 특별히 설계된 운영체제
8. 운영체제의 종류
데스크톱 운영체제
- PC나 노트북 등 책상에 놓고 사용하는 데스크톱 컴퓨터를 위한 운영체제
개인의 문서 편집, 웹 서핑, 게임, 프로그램 개발, 음악 감상 등 범용 사용
비전문가라도 사용하기 쉽고 다양한 종류의 응용프로그램을 쉽게 활용하도록 하는데 목적- 범용(General Purpose)으로 사용됨
Windows, Mac OS, Linux가 전체 시장 지배
Windows: 80~90%, Mac OS: 10~20%, Linux: 나머지서버 컴퓨터 운영체제
- 네트워크에 연결하고 24시간 실행되는 컴퓨터, 보안 중요
Unix 계열의 linux, FreeBSD, Windows Server, Mac OS Server모바일 운영체제
- 모바일 전화기, 스마트폰, 태블릿, 컴퓨터 등 다양한 이동용 혹은 휴대용 장치에서 실행되도록 만들어진 운영체제, 절전과 보안 중요
Android, iOS, BlackBerry, Bada, Symbian, Windows Mobile임베디드 운영체제
- 임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능
WinCE, 여러 종류의 임베디드 리눅스실시간 운영체제
- RTOS(Real Time Operating System)
- 실시간 애플리케이션(혹은 태스크)을 각각 정해진 데드라인(deadline) 시간 내에 처리되도록 보장하는 것을 목표
PSOS, VxWorks, VRTX, RT-Linux, Lynx
바탕화면이란 무엇인가?
Fcuntion call
응용소프트웨어의 함수 호출System call
응용소프트웨어의 운영체제 호출
printf()를 화면에 찍는 과정
프로그램이 printf() 호출(Function call)
프로그램이 printf()를 화면에 출력해 줄 것을 운영체제에 요청(System call)