※ 공부한 것을 정리한 노트입니다. 참고만 하세요. ※
1. 정의
- 사용자와 하드웨어 사이에서 중계 역할을 하며, 프로그램의 실행을 관리하고 제어하는 시스템 소프트웨어
- 컴퓨터가 켜질 때 처음 적재되어, 나머지 모든 프로그램의 실행을 제어하고, 사용자의 요청을 처리하는 소프트웨어
- 컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어
단어별 분석
- 자원
- 하드웨어 자원 - CPU, 캐시, 메모리, 키보드, 마우스, 디스플레이, 하드디스크, 프린터 등등
- 소프트웨어 자원 - 응용 프로그램
- 데이터 자원 - 파일, DB등
- 독점
- 자원에 관한 모든 권한은 운영체제에 있다.
- 자원 할당, 공유, 액세스, 입출력
- ex) 파일 생성 - 디스크 빈 공간 관리, 파일 저장 위치 관리, IO 등
- 관리(관리자, supervisor)
- 실행중인 프로세스, 메모리 관리
- 파일과 디스크 장치, IO장치, 사용자 계정 관리 등
- 소프트웨어
- kernel + UI/UX 도구 프로그램으로 이루어짐
- ex) 탐색기(explorer), 작업 관리자(task manager), 제어판(control panel))
- 디바이스 드라이버
목적
- 사용자의 사용 편리성
- 컴퓨터의 자원 관리 효율성
기능
- CPU/프로세스 관리 : 프로세스 적재, 실행, 종료, 생성 관리 / 프로세스 스케줄링, 동기화
- 메모리 관리 : 메모리 할당/반환, 보호, 가상 메모리
- 파일 시스템 관리 : 파일 생성/삭제, 열기/닫기, 읽기/쓰기, 파일 정보 관리, 저장 관리
- 장치 관리 : 장치 read/write, 제어
- 네트워크 관리 : 네트워크 입출력, 분산처리
- 보안 관리
- 기타 관리 : 계정, 통계, 오류 발견 및 대응, 부팅
응용 소프트웨어와의 차이
2. 운영체제의 태동
고정 프로그래밍 컴퓨터(1940년대)
고정 프로그래밍 방식
- 1940년대 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대
- 운영체제에 대한 개념이 없었음.
- 소프트웨어와 하드웨어의 분리 개념이 없음. 모든 것이 하드웨어로 제작 됨
- 프로그래밍
- 종이에 프로그램 구현할 스위치와 전선 연결도 작성
- 배선판에 전선 연결
- 하나의 명령, 여러 가닥의 전선 연결
- 프로그램 전체 구축에 수많은 전선 + 며칠 소요 → 새로운 프로그램 작성시 매우 힘듬
- 사례
- 독일의 Z3 computer
- 영국에서 독일군의 암호를 해독하기 위해 만든 colossus
- 에니악
내장 프로그래밍 컴퓨터(1945년~)
내장 프로그래밍 방식
- 1945년 폰 노이만이 제안
- 1951년 에드박 컴퓨터를 만들 때 적용
- 오늘날의 컴퓨터 구조가 됨
의미
- CPU와 메모리 분리
- 실행할 프로그램은 메모리에 적재하고, CPU는 메모리에서 읽어와 프로그램을 실행함
- 고정 프로그래밍 방식에 비해 정말 획기적인 변화
- 하드웨어의 변화 없이 실행시킬 프로그램만 메모리에 적재
- 소프트웨어와 하드웨어의 분리
- 펀치 카드에 구멍을 뚫어 프로그램을 작성함
- 카드리더기로 프로그램을 메모리에 읽어 들임
프로그램 로더 (1950년대)
프로그램 로딩의 시대가 시작. 운영체제 개념의 등장
- 1954년 IBM 701 출시. IBM의 첫 내장 프로그래밍 컴퓨터
- 기계만 대여하고 어떤 SW도 제공하지 않음
- IBM 701 개발자들은 첫번째 카드에 다음 카드에 작성된 프로그램을 메모리에 적재할 코드만 작성하고, 두번째 카드부터 필요한 프로그램을 작성한다 → 로더 프로그램(뒷 카드를 메모리에 올리는 카드)의 필요성
- 로더가 운영체재로 발전
- 오늘날 운영체제의 가장 기본적인 기능
- 저장장치에 담긴 프로그램을 메모리에 적재하는 기능
원시 운영체제 GM OS (1955년)
- IBM 701의 고객 GM(General Motors)이 개발
- 핵심 개념
- 로더 프로그램을 사용자의 프로그램에서 분리 → 사용자가 자신의 프로그램을 적재하는 셀프-로더 프로그램 작성의 번거로움 해소
- 로더 프로그램은 시스템 내의 테이프에 저장, 필요할 때마다 실행
- 당시의 로더 프로그램을 Monitor라고 부름
- 후에 General Motors Operating System (GM OS) 이라고 불림
GM OS의 의의
사용자에게서 로더 프로그램을 분리하고, 시스템에 한개만 두어, 사용자 프로그램을 실행할 때 작동하여 프로그램을 읽어 실행시켜준다는 점에서 원시적인 OS라고 평가받는다.
최초의 운영체제 GM-NAA I/O 탄생 (1956~1957년)
- IBM 701보다 성능이 좋은 IBM 704 등장
- 하지만 여전히 문제가 존재한다.
- 개발자들은 프로그램을 실행하기 위해 여전히 긴 시간을 대기해야한다.
- 비싸디 비싼 컴퓨터가 오랜 시간동안 쉬고 있다. 개발자가 프로그램을 실행하기 위해 시스템을 셋팅하는동안, 컴퓨터는 놀고 있기 때문
- 입출력 루틴을 여전히 개발자가 작성
- 1956년 GM과 NAA(North American Aviation)이 GM-NAA I/O를 공동 개발함.
- 고가의 IBM 704를 효율적으로 사용하기 위해서 IBM 701의 GM OS를 확장하여 구현
- 운영체제로서의 모습을 갖춤
- 배치(batch) 방식으로 작동 : 개발자들이 작성하여 쌓아놓은 작업을 순서대로 하나씩 메모리에 적재하여 하나씩 실행
- GM-NAA I/O프로그램은 메모리에 상주함 → 오늘날의 운영체제 방식
- 입출력 장치들을 제어하는 루틴을 라이브러리 형식을 갖추고 프로그램 사이에 공유함. (카드 입력장치, 테이프 입출력장치, 프린터 출력 등) → 라이브러리 개념의 등장
- 구조
- 어셈블러 코드 : 사용자가 작성한 어셈블리어 프로그램을 기계어로 번역
- 로더 프로그램 : 사용자 프로그램을 하나씩 메모리에 적재
- 운영체제의 메인코드 : 운영체제의 시작 코드
- 공통 입출력 코드 : 장치 입출력을 다루는 프로그램 코드, 라이브러리화 되어 모든 프로그램이 실행시 호출하여 사용
3. 운영체제의 발전
운영체제의 태동
- 1세대 컴퓨터 시절, 운영체제의 개념 전무
- 개발자는 펀치 카드에 프로그램 작성
- 컴퓨터는 한번에 한개의 작업
- 컴퓨터 셋업하는 동안 많은 시간이 유휴(노는, idle)상태
배치 운영체제
- 출현 배경 : 컴퓨터의 유휴시간을 줄여 컴퓨터의 활용률 향상
- 개발자가 모든 것을 담당하던 이전과는 달리, 프로그램(펀치카드)를 작성하는 개발자와, 이를 실행해주는 관리자로 나뉘어짐.
- 개발자는 프로그램을 작성한 후, 입력 데크에 올려두고 결과가 나올때까지 기다림
- 관리자는 입력데크에 올라온 프로그램을 실행하고, 프로그램 실행 결과가 적힌 종이 출력후 밖에 쌓아둠 → 이후 개발자가 회수
- 하지만, 여전히 한번에 하나의 작업만 가능함
다중 프로그래밍 운영체제
- 정의 : 여러 프로그램을 메모리에 미리 적재하고, CPU가 한 프로그램을 실행하다 I/O가 발생하면, 해당 작업이 완료될 때까지 CPU가 메모리에 적재된 다른 프로그램을 실행하는 식으로 CPU의 노는 시간을 줄이는 기법
- 출현 배경
- 1960년대 CPU등 하드웨어들의 속도가 개선되고, 컴퓨터 가격이 오름 → 결국 활용률을 향상시키기 위함
- 프로그램의 실행형태로 인한 유휴시간 발생
- 형태 : CPU 작업 - I/O 작업 - CPU 작업 - I/O 작업 - CPU 작업 - I/O 작업 - .........
- 배치 운영체제는 한번에 하나의 작업을 수행하기 때문에, I/O 작업이 이루어지는 동안 유휴시간 발생
다중 프로그래밍 기법의 문제점
- 현재 모두 해결된 문제들. 단일 프로그래밍 기법에서 다중 기법으로 넘어가면서 발생하고, 발견된 문제들
- 큰 메모리 이슈
- 여러 프로그램을 동시에 적재해야하기 때문에 메모리의 크기를 늘릴 필요가 있음
- 메모리 할당 및 관리 이슈
- 몇 개의 프로그램을 적재할 것인가? 메모리 어디에 적재해야하는가? 프로그램당 할당해야하는 메모리의 크기는 얼마나 되어야 하는가? 이들을 적절히 조율해야하는 문제가 발생한다.
- 메모리 보호 이슈
- 한 프로그램이 다른 프로그램의 영역을 침범하지 못하도록 해야한다. 데이터 손실로 이어지기 때문
- CPU 스케줄링과 컨텍스트 스위칭
- 실행시킬 프로그램을 선택하는 스케줄링이 필요하다.
- 다른 프로그램을 실행하기위해 넘어가면서, 프로그램의 실행 상태를 저장할 컨텍스트를 정의해야한다
- 컨텍스트 스위칭이 필요하다.
- 인터럽트
- I/O 작업의 완료를 전달받을 방법이 필요했다.
- 동기화
- 여러 프로그램이 동시에 한 자원을 액세스하는 경우에 발생할 데이터 불일치, 손실 등의 문제를 해결해야한다.
- 교착 상태
- 프로세스들이 상대가 가진 자원을 서로 요청하면서 무한대기하는 교착 상태가 발견되었다.
- 예를 들어 두 사람이 있고, 수저 세트는 하나만 있다고 하자. 밥을 먹기 위해서는 수저 세트를 모두 들고 있어야만 한다. 하지만, 한 사람은 숟가락만, 다른 사람은 젓가락만 가지고 있는 상태에서 서로의 도구를 요청하는 경우, 무한 대기 현상이 발생한다.
시분할(Time sharing) 다중 프로그래밍 운영체제
- 출현 배경
- 다중 프로그래밍 운영체제와 거의 동시에 연구가 진행됨.
- 배치 처리와 당시 존재하던 다중프로그래밍의 문제점 2개를 해결하고자 함
- 비대화식(non-interactive) 처리방식
- 느린 응답시간, 오랜 대기 시간
- 시분할 운영체제
- 1959년 MIT의 John McCarty교수에 의해 발표
- 빠른 디버깅이 필요함.
- 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안
- 사용자는 터미널(키보드+모니터+전화선+모뎀)을 통해 시분할 운영체제가 있는 메인 컴퓨터에 원격 접속
- 메인 컴퓨터는 시간을 나누어 돌아가면서 여러 프로그램을 실행함
- CTSS : 시분할 시스템
그 외 다양한 운영체제
- 개인용 운영체제 : 장치, 부품들의 성능향상, 개인용 컴퓨터의 필요성
- 임베디드 : 산업 기계, 상용 제품 등에 내장되어 특정 목적을 지원하는 소형컴퓨터, 임베디드OS는 이런 소형컴퓨터를 제어하는 운영체제
- 모바일 : 하드웨어의 급속한 발전으로 휴대가능한 모바일 장치가 등장
'대학교 > 운영체제' 카테고리의 다른 글
chap2. 컴퓨터 시스템과 운영체제 (2) (0) | 2023.04.26 |
---|---|
chap2. 컴퓨터 시스템과 운영체제 (1) (0) | 2023.04.26 |
chap0. 운영체제 교재 정보 (0) | 2023.03.10 |