컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중계 역할을 하면서, 프로그램을 실행을 관리하고 제어하는 시스템 소프트웨어 (운영체제는 컴퓨터가 아니며, 실체가 있는 소프트웨어이다.)
컴퓨터가 켜질 때 처음으로 메모리에 적재되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어
컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어
운영체제는 모든 컴퓨터 자원 관리
- 하드웨어 자원 - CPU, 캐시나 메모리, 키보드, 마우스, 디스플레이, 하드디스크, 프린터
- 소프트웨어 자원 - 응용프로그램
- 데이터 자원 - 파일, 데이터베이스 등
운영체제는 자원에 대한 독점 권한
- 자원할당, 자원 공유, 자원 액세스, 자원 입출력 등
- 예: 파일 생성 - 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력
운영체제는 관리자
- 실행 중인 프로그램 관리, 메모리 관리, 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 등 관리...
운영체제는 소프트웨어
- 커널이라고 불리는 핵심 코드와 UI/도구 프로그램들( 탐색기, 작업관리자, 제어판 등) 장치를 제어하는 디바이스 드라이버들로 구성
운영체제의 목적
- 사용자의 컴퓨터 사용의 편리성
- 컴퓨터 자원 관리의 효율성
운영체제의 기능
- CPU/프로세스 관리
- 메모리 관리
- 파일 시스템 관리
- 장치 관리
- 네트워크 관리
- 보안 관리
- 기타 관리 ( 사용자 계정 관리, 통계(CPU, 메모리, 네트워크, 사용자 접속시간 등, 오류 발견 및 대응, 부팅) )
운영체제 | 응용소프트웨어 | |
---|---|---|
목적 | 컴퓨터 하드웨어나 응용소프트웨어 등 자원 관리 | 컴퓨터 사용자들의 요구를 충족시킬 수 있도록 설계된 소프트웨어 |
기능 | 프로세스, 메모리, 파일 시스템, 입출력 장치 등 자원 관리와 사용자 관리 | 소프트웨어를 만든 특정 목적만 수행 |
개발 언어 | C/C++, 어셈블리어 | C/C++ 뿐만 아니라 Java, Python, C# 등 |
실행 | 부팅 시 메모리에 적재되어 실행을 시작하여 컴퓨터를 끌 때까지 실행 | 사용자가 명령을 통해 실행시키거나 종료시킴 |
자원에 대한 접근 권한 | 컴퓨터의 모든 자원에 대해 배타적 독점 사용 권한 | 컴퓨터 자원을 사용하고자 할 때 반드시 운영체제에게 요청 |
프로그램 로딩 시대 -> 운영체제 개념의 시작
IBM 701 메인 프레임
- 1954년 IBM에서 만든 첫 번째 내장 프로그래밍 방식의 컴퓨터
- IBM의 첫 번째 범용 컴퓨터
- 판매X ONLY 대여
- 기계만 대여하고 어떤 소프트웨어도 제공하지 않았음
- LOAD 버튼 : 한 장의 카드만 읽는 것으로 끝남. 카드 한 장에는 최대 24개의 명령을 작성할 수 있었음. LOAD 버튼 대신 수동으로 프로그램을 입력하고 실행시키기 위해 컨트롤 패널에서 Enter Instruction 버튼, Start Button 등을 눌러 실행시킬 수도 있었음
로더 프로그램 필요 : 첫번째 카드 반복 작성 -> 낭비 -> 목적 프로그램을 읽어들이는 코드(로더)의 작성 필요 (로더는 모든 컴퓨터에 공통적으로 필요)
첫 번 째 카드 : 다음 카드에 작성된 프로그램을 메모리에 적재하는 코드만 작성
두 번 째 카드부터 : 목적하는 프로그램 작성
★ 로더가 운영체제로 발전
1955년 GM은 IBM 701의 처리 속도를 높인 IBM 704 주문
여전히 문제점 존재
- 개발자들은 여전히 대기 번호를 뽑고 자신의 차례를 기다림
- 비싼 컴퓨터를 많은 시간 놀리고 있다는 점
- 카드 입력 장치나 테이프 입력 장치를 제어하는 프로그램 코드와 하드웨어 서비스 루틴은 개발자가 별도로 알아서 작성
최초의 운영체제 GM-NAA I/O 개발
- 1956년 GM과 NAA(North American Aviation)의 공동 개발 (IBM 701의 모니터 프로그램을 확장하여 구현)
운영체제로서의 모습 갖춤
- 배치 방식(batch operating system)으로 작동 (여러 개발자들이 작성하여 쌓아놓은 작업들을 순서대로 하나씩 자동으로 메모리에 로딩하고 한 번에 하나의 작업만을 실행해주는 배치 운영체제)
- 사용자 입출력을 다루는 코드 메모리에 상주(오늘날 운영체제 방식)
*GM-NAA-IO의 구조
배치 방식의 운영체제로 인해서 개발자는 펀치 카드를 입력 데크에 두고 결과를 기다리기만 하면 자동으로 테이프 장치에 대기 중인 프로그램을 한 번에 하나씩 적재하고 실행시켜주었다.
1) 출현배경
2) 다중 프로그램 기법 출현
1) 출현 배경
2) 시분할 운영체제의 시작(John McCarty)
[참고]
시분할 운영체제를 가진 시스템
- 터미널은 모니터와 키보드, 모뎀으로 구성된 간단한 입출력 장치이며, 전화선으로 메인프레임과 연결
- 메인프레임 컴퓨터에는 터미널(사용자)마다 사용자의 명령을 받아 처리하는 프로그램 실행
- 시분할이란 각 프로그램에게 고정된 시간 만큼 CPU를 할당하여 번갈아 실행시키는 기법
- 사용자의 키 입력 속도에 비해 컴퓨터의 속도가 비교할 수 없이 빠르기 때문에 시분할 처리 가능
- 사용자가 느리기 때문에 시간을 나누어 CPU가 여러 프로그램을 실행한다고 하더라도 사용자는 응답이 늦게 온다고 여기지 않는다. 사용자는 명령을 내리기 위해 생각하거나, 이전 결과를 분석하거나, 커피를 마시거나, 화장실을 가거나 하는 등 많은 시간을 지체하기 때문이다.
배치 | 다중프로그래밍 | 시분할 다중프로그래밍 | |
---|---|---|---|
총 실행 시간 | 30 | 17 | 16 |
CPU 유휴 시간 | 14 | 1 | 0 |
CPU 활용률 | 16/30 = 0.53 = 53% | 16/17 = 0.176 = 94% | 16/16 = 100% |
처리율 | 3/30 = 0.1작업/시간 | 3/17 = 0.176작업/시간 | 3/16 = 0.1875작업/시간 |
출처 : 명품 운영체제