운영체제의 정의
- 컴퓨터의 사용자와 하드웨어 사이에서 가교 역할을 하는 프로그램
- 하드웨어 그 자체가 가지고 있는 능력을 십분 발휘되도록 제어해주는 프로그램
- 컴퓨터가 컴퓨터 밖의 세계와 상호 동작하는 방법을 정의한 프로그램
운영체제의 역할
- 사용자 인터페이스(User Interface) → 가교와 자원 관리(Resource Management)를 위한 프로그램의 집합
일괄처리(Single-stream Batch Processing System)
1차 operating system의 등장
다수 개의 프로그램을 읽어 저장해 놓고, 한 번에 한 개씩의 프로그램을 실행시켜 주는 방식
작업은 차례대로 한 개씩 처리된다. 이 말은 한 개의 작업이 시작되면,
<Batch System의 특징>
- 그 일이 완전히 끝날 때까지 다른 작업은 기다려야 한다는 뜻
- 프로그램이 시작해서 완전히 끝날 때까지 중간에 사용자의 개입이 허용되어있지 않다.
→ 에러의 유무와 상관없이 결과물 받을때까지 개입불가하다는 단점
→ 다른 작업은 기다리는게 굉장히 비효율적임
→ 읽어놨던 job들은 디스크(하드)에 저장됨
하나 하면 다음 메모리를 디스크에서 읽어 실행
2세대 운영체제 (1960년대 전반기)
- 트랜지스터 컴퓨터
- 하드웨어가 좋아져서 컴퓨터 작아지고 전력 줄고 좀 더 빨라지고 값은 싸졌음
- 1959년 UNIVAC-II : 자기코어 기억장치를 주기억 장치로 사용
- 1960년대 초 IBM 1400 시리즈
- 진공관으로 만들어진 컴퓨터에 비해 100배 이상 축소, 속드는 100배 이상 빠름
- 자기디스크 팩 등장 : 보조 기억 장치
- 소프트웨어로는 Assembly 언어, FORTRAN, COBOL 등장
→ 운영체제는 컴퓨터에 장착되어 있는 다양한 주변기기들을 효율적으로 관리하는데 관심을 가졌으며, 사용자에게도 보다 나은 서비스를 제공하기 위한 많은 방식 개발
- 다중 프로그래밍 시스템, 다중처리 시스템, 시분할 시스템, 대화식 시스템, 실시간 시스템
<다중 프로그래밍 시스템(Multiprogramming System)>
- 일괄처리 시스템의 단점을 보완
- 다수(Multi) 개의 작업(Program)이 같이 주기억 장치에 있도록 한 방식
- 한 작업을 처리하는 도중에 입출력이 발생하면 바로 다른 작업을 처리
- 모든 작업은 실행되기 위해서 주기억 장치(Main Memory)에 있어야 한다는 점. 이것이 바로 폰 노이만이 말한 내장 프로그램 개념(Stored Program Concept)
<다중처리 시스템 (Multiprocessing System)>
- 여러(Multi) 개의 처리장치(Processor)를 장착하여 동시에 여러 작업을 병렬로 실행하여 처리속도를 최대한 높이는 방식
<시분할 시스템(Time Sharing System)>
- CPU가 처리해 줄 수 있는 시간을 작업 수에 맞춰 분할하여 각자에게 일정량만큼씩 분배하여 번갈아 가며 처리
- 실제로는 많은 작업이 있음에도 불구하고 각 작업은 CPU가 자신의 일을 계속해서 처리해 주고 있다는 생각을 함
<대화식 시스템(Interative System)>
- 시스템과 사용자가 모니터와 입력장치를 통해 마치 대화하듯이 일을 처리해 나가는 방식
- ex) 작업의 진행사항을 체크하기 위해 모니터가 필요하게 되고, 또 계속해서 다음 일을 의뢰하기 위해 키보드나 마우스같은 입력장치가 필요
3세대 운영체제(1960년대 후반기 ~ 1970년)
- 직접회로(Integrated Circuit, IC) 사용
- 부피와 무게를 혁신적으로 줄이고 속도와 신뢰도는 1000배 이상 발전
- 미니 컴퓨터, 범용 컴퓨터 등장
- DEC의 미니 컴퓨터, IBM 360 시리즈
- 다중모드 시분할 시스템 등장
- 일괄 처리, 시분할, 실시간 작업을 모두 지원
- 근거리 통신망(Local Area Network, LAN), 소프트웨어 공학, 보안 등
- UNIX 등장
- UNIX는 Open Source로 활발한 연구가 되었음. 하지만, 지금은 Open Source가 아님
- Linux : 1990년대 초 개발
4세대 운영체제(1970년대 후반기 ~ 현재)
- LSI, VLSI 사용
- 마이크로프로세서의 개발로 개인용 컴퓨터가 본격적으로 보급
- 분산(Distributed) 및 병렬(Parallel) 처리 시스템 등장
- 이기종 간의 자유로운 통신, 데이터베이스, 인공지능 등장
→ 하드웨어가 그만큼 좋아짐
OS 안에는 어떤 것들이?
쉘은 유닉스 나오면서 쓰고 그 이전에는 이걸 command interpreter라고 명령어 번역기 라고 했었음
그 운영체제에서 사용할 수 있는 명령어 예를 들어 리눅스면 ‘ls’
- 쉘(Shell) : 사용자나 응용 프로그램이 운영체제와의 의사소통을 위해 필요한 요소
- ex) 정보 교환, 아이콘이나 메뉴를 클릭해서 프로그램 실행
- 장치 관리 : 시스템에 있는 주변 장치(키보드, 모니터, 프린터, 하드디스크) 제어
- 파일 관리 : 사용자 또는 프로그래머로 하여금 파일을 만들고, 지우고, 수정하고 이름을 부여하며, 디렉토리 등을 관리
- 메모리 관리 : 주기억 장치의 관리. 실행될 프로그램을 위해 주기억 장치의 일정 부분을 할당하거나 주기억 장치 안에 있는 프로그램들의 경계를 설정하여 서로 침범하지 못하게 하는 등의 일처리
- 처리기 관리 : 컴퓨터의 처리기 즉, CPU의 처리 능력을 각 작업에 효과적으로 배분토록 관리
- 이들 관리 부분들은 밀접한 연관을 가지고 실행됨
OS는 컴퓨터의 어디에 있을까?
- 운영체제는 커널, 쉘과 유틸리티 프로그램으로 나뉨
- 커널
- 운영체제의 각종 기능들 중 사용자와 실행 프로그램을 위해 매우 빈번하게 사용되는 부분
- 컴퓨터가 처음 부팅될 때에 주기억 장치에 적재되어 시스템의 운영이 종료될 때까지 계속해서 주기억 장치에 남아 있게 되는 부분
- 운영체제의 핵심이며 핵(Neucleus), 관리자(Supervisor), 메모리 상주(Memory Resident) 프로그램이라고도 부름
- IO.SYS와 MSDOS.SYS 그리고 COMMAND.COM와 같은 프로그램
- 유틸리티 프로그램
- PRINT.EXE, FORMAT.EXE, BACKUP.EXE와 같은 프로그램
- 근래에는 커널 중에서도 좀 더 빠른 실행이 요구되거나 높은 수준의 보호가 필요한 프로그램들은 아예 마이크로 프로그래밍하여 ROM이나 PLA(Programmable Logic Array)와 같은 칩의 형태로 만들어 놓기도 함
- 펌웨어(firmware)
듀얼 모드
- 대부분의 컴퓨터 시스템에는 두 개의 모드, user mode와 kernel mode를 정해 놓고 각각의 프로그램은 이중 하나의 모드에서 실행되도록 한다
- kernel mode : 운영체제가 실행되는 모드, 모든 명령이 수행 가능
- user mode : 사용자 프로그램, 응용 프로그램 등이 실행되는 모드
- 목적
- 시스템의 보호
- 장치들의 효율적인 관리
- 시스템 호출
- 사용자 프로그램이 운영체제의 어떤 서비스를 요구할 때 커널을 호출하는 것
- 운영체제는 사용자가 요구한 서비스를 커널 모드에서 실행한 후, 사용자 모드에서 사용자 프로그램이 실행되도록 리턴함
이 글은 <OS? Oh Yes! 누워서 보는 운영체제 이야기> 교재를 바탕으로 공부하여 정리한 글입니다.
'운영체제' 카테고리의 다른 글
[OS] Chap 02. 들어가기 전에 (0) | 2024.05.20 |
---|