StudyRepository
article thumbnail
728x90

 

 

 

 

 

 

 

운영체제란?

 

 

 

 

운영체제의 정의

 

 

1. 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중계 역할을 하면서, 프로그램 실행을 관리하고 제어하는 시스템 소프트웨어

> 운영체제는 컴퓨터가 아니다.

> 운영체제는 실체가 있는 소프트웨어다. (추상적이지 않다.)

 

 

 

2. 컴퓨터가 켜질 때 처음으로 메모리에 적재된다.

 

 

 

3. 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해준다.

 

 

 

4. 컴퓨터의 자원을 독점적으로 관리한다.

 

 

 

 

 

컴퓨터, 운영체제, 사용자

 

 

 

운영체제의 역할

 

 

1. 운영체제는 컴퓨터의 모든 자원(resource) 관리

 

 

- 하드웨어 자원: CPU, 캐시, 메모리, 키보드, 마우스, 디스플레이,하드디스크,프린터

 

- 소프트웨어 자원: 응용프로그램 - 데이터 자원: 파일, 데이터베이스 등

 

 

 

 

2. 운영체제는 자원에 대한 독점(exclusive) 권한 소유

 

 

- 자원에 대한 모든 관리 권한은 운영체제에게 있음

 

- 자원 할당, 자원 공유, 자원 액세스, 자원 입출력 등 예) 파일 생성: 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력 등

 

 

 

 

3. 운영체제는 관리자(supervisor)

 

 

- 실행중인 프로그램 관리, 메모리 관리

 

- 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 등 관리 등

 

 

 

 

4. 운영체제는 소프트웨어(software)

 

 

- 커널(kernel)이라고 불리는 핵심 코드와, UI를 비롯한 도구 프로그램들(tool/utility)

예: 탐색기(explorer), 작업 관리자(task manager), 제어판(control panel) 등

 

- 장치를 제어하는 디바이스 드라이버들로 구성

 

 

 

운영체제의 목적과 기능

 

운영체제의 목적

 

- 사용자의 컴퓨터 사용 편리성

- 컴퓨터의 자원 관리 효율성 운영체제의 기능

 

 

운영체제의 기능 (모든 기능들은 사용 편리성과 효율성을 위한 것)

 

- CPU/프로세스 관리(process management)

- 메모리 관리(memory management)

- 파일 시스템 관리(file system management)

- 장치 관리(device management)

- 네트워크 관리

- 보안 관리

 

- 기타 관리

> 사용자 관리 - 사용자 계정 관리

> 통계 - CPU, 메모리, 네트워크의 사용 시간, 사용자의 접속 시간 등

> 오류 발견 및 대응

> 부팅(booting)

 

 

 

 

 

고정프로그램컴퓨터 (1940s)

 

고정 프로그램 방식(fixed program computer)

 

- 1940년대, 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대

- 운영체제에 대한 개념 없음

 

- 소프트웨어와 하드웨어의 분리 개념 없음

> 모든 것이 하드웨어로 제작

 

- 프로그래밍

> 종이에, 프로그램을 구현하는 스위치와 전선 연결도 작성

> 배선판(plugboard)에 전선 연결, 프로그램을 기계에 고착화

> 하나의 명령을 구성하기 위해 여러 가닥의 전선 연결

> 프로그램 전체 구축에 수천 개의 전선 연결, 며칠 소요

> 새로운 프로그램을 작성할 때(구축할 때) 큰 고통

 

- 사례

> 1941년 독일에서 만든 Z3 computer

> 1944년 영국에서 독일군의 암호를 해독하기 위해 만든 Colossus

> 1943~1945년 미국에서 만든 최초의 전자식 컴퓨터 ENIAC(Electronic Numerical Integrator And Computer)

 

 

 

 

내장프로그래밍 (1945s)

 

내장 프로그래밍 방식(stored program)

- 1945년 폰노이만에 의해 제안

- 1951년 EDVAC 컴퓨터를 만들 때 적용

- 오늘날 컴퓨터의 구조가 됨

 

 

내장 프로그램 컴퓨터의 의미

- CPU와 메모리 분리

 

- 소프트웨어와 하드웨어 분리

 

- 실행할 프로그램을 메모리에 담고, CPU가 프로그램을 실행하는 방식

> 고정 프로그래밍 방식에 비해 획기적인 변화

> 하드웨어의 변화 없이, 실행시키려는 프로그램만 메모리에 적재

 

- 프로그램은 입력 장치를 통해 메모리에 적재

> 펀치 카드에 구멍을 뚫어 프로그램 작성 (구멍의 위치로 프로그래밍) 

> 카드 리더기로 프로그램을 메모리에 읽어 들임

 

 

 

 

 

 

 

 

 

 

IBM701 컴퓨터 (1950s)

 

 

프로그램 로딩 시대

- 운영체제 개념의 시작

 

 

IBM 701 메인 프레임

 

- 1954년 IBM에서 만든 첫 번째 내장 프로그래밍 컴퓨터

- IBM의 첫 번째 범용 컴퓨터

> 판매하지 않고 대여만

> 기계만 대여하고 어떤 소프트웨어도 제공하지 않았음

> IBM 701을 빌린 고객(기업)이 모든 것을 해야 했음

 

 

 

 

 

 

 

로더 프로그램, 운영체제의 시작

 

IBM 701 개발자의 일반적인 개발 형태

 

- 첫번째 카드

 

> 다음 카드에 작성된 프로그램을 메모리에 적재하는 코드만 작성

>한 장의 카드에는 24개의 명령만 작성 가능

>24개보다 긴 프로그램 작성에 2장 이상의 카드 필요

 

- 두번째 카드부터 목적하는 프로그램 작성

 

 

로더 프로그램 필요

 

- 개발자가 프로그램을 메모리에 적재하는 앞 카드 코드 작성에 소요하는 시간 낭비 를 줄일 필요가 있었음

> 이 코드를 로더(loader)라고 부름

> 로더는 모든 사용자(개발자)에게 공통으로 필요

 

 

 

로더가 운영체제로 발전

 

- 오늘날 운영체제의 가장 기본적인 기능

- 사용자의 명령을 받아 저장 장치에 담긴 프로그램을 메모리에 적재하는 기능

 

 

 

 

원시 운영체제 GM OS (1955s)

 

GM OS

- 1955년, IBM701의 고객 GM(General Motors)에 의해 개발

> 펀치 카드에 담긴 프로그램을 메모리에 적재하는 로더 프로그램 개발

 

- 핵심 개념

> 로더 프로그램을 사용자 프로그램에서 분리

> 사용자가 자신의 프로그램을 적재하는 셀프-로더 프로그램 작성의 번거로움 해소

> 로더 프로그램은 시스템 내 테이프에 저장, 필요할 때마다 실행

> 그 당시, 로더 프로그램을 모니터(Monitor)라고 불렀음 > 후세대, General Motors Operating System(GM OS)라고 불렀음

 

GM OS는 원시적인 최초의 운영체제

- 사용자 프로그램에서 로더 프로그램 분리하고,

- 로더 프로그램을 시스템에 한 개만 두고,

- 사용자 프로그램을 실행할 때 작동하여,

- 사용자 프로그램을 읽어 실행

 

 

최초 운영체제 GM-NAA I/O (1956s)

 

- 1955년 GM은 IBM 701의 처리 속도를 높인 IBM 704 주문

 

 

 

IBM 704 컴퓨터의 3가지 문제점

 

1. 개발자들은 여전히 대기 번호를 뽑고 자신의 차례를 기다려야 함

 

2. 오랜 시간 비싼 컴퓨터를 놀려두고 있어야 함

- 개발자가 프로그램을 실행시키기 위한 시스템 셋업하는 동안, 컴퓨터는 놀게 됨

 

3. 입출력 루틴을 개발자 스스로 작성

- 카드 입력 장치나 테이프 장치를 제어하는 프로그램 코드 작성

 

 

최초의 운영체제 GM-NAA I/O 개발

- 1956년 GM과 NAA(North American Aviation)의 공동 개발

> 고가의 IBM 704 컴퓨터를 보다 효율적으로 사용하기 위하여 개발

> IBM 701의 모니터 프로그램(GM OS)을 확장하여 구현

 

- 운영체제로서의 모습을 갖추기 시작함


> 배치 방식(batch operating system)으로 작동

개발자들이 작성한 작업들을 순서대로 메모리에 적재, 한 번에 하나의 작업 실행

 

> GM-NAA I/O 프로그램을 메모리에 상주(오늘날 운영체제 방식)

 

> 입출력 장치들을 제어하는 루틴들을 라이브러리 형태로 갖추고 프로그램들이 공유

카드 입력 장치의 입출력, 테이프 입출력, 프린터 출력 등

개발자는 입출력 코드를 작성할 필요 없음

 

 

 

 

GM-NAA-IO의 구조

 

- 어셈블러 코드

> 사용자가 작성한 어셈블리어 프로그램을 기계어 코드로 번역

 

- 로더 프로그램

> 사용자 프로그램을 하나씩 메모리에 적재

 

- 운영체제 메인 코드와 공통 입출력 코드

> 운영체제 메인 코드: 운영체제 시작 코드

> 공통 입출력 코드: 장치 입출력을 다루는 프로그램 코드

라이브러리화 되어 사용자 프로그램(목적 프로그램)이 실행 시 호출하여 활용

 

 

 

운영체제가 없던 초기 컴퓨터 세대

 

- 개발자가 펀치 카드에 프로그램 작성, 입력, 실행

- 컴퓨터는 한 번에 한 개의 작업만 실행

- 컴퓨터는 셋업하는 동안 많은 시간이 유휴(노는,idle) 상태

 

 

배치 운영체제

 

출현 배경

 

- 컴퓨터의 노는 시간(idle 시간, 유휴시간)을 줄여 컴퓨터의 활용률 향상

 

 

배치 운영체제 컴퓨터 시스템

 

- 개발자와 관리자의 구분

- 개발자는 펀치 카드를 입력 데크에 두고 결과 기다림

- 배치 운영체제는 테이프 장치에 대기중인 프로그램을 하나씩 적재 및 실행

 

 

다중프로그래밍 운영체제

 

출현 배경

 

- 1960년대 중반

> CPU 등 하드웨어 속도 개선, 컴퓨터 가격 증가

 

 

- 프로그램의 실행 형태로 인한 CPU의 유휴시간(idle 시간) 발생

> 프로그램 실행 형태: CPU 작업 - I/O 작업 – CPU 작업 – I/O 작업의 반복 

> 배치 작업은 1번에 1개의 프로그램만 실행

> I/O 작업이 이루어지는 동안 CPU는 놀면서 대기, CPU의 많은 시간 낭비 발생

 

 

 

(I/O란 Input 과 Output의 약자로 입력과 출력, 간단히 줄여서 입출력이라고 한다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고 받는 행위를 뜻한다.)

 

- CPU의 유휴시간을 줄일 필요

> CPU 활용률 증가 -> 처리율 증가(더 많은 사용자 프로그램 실행)

 

 

다중프로그래밍(Multiprogramming) 기법 출현

- 미리 여러 프로그램을 메모리에 적재

> 메모리가 수용할 만큼 다수의 프로그램 적재

 

- 정의 > 여러 프로그램을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 I/O가 발생

> 입출력이 완료될 때까지 CPU가 메모리에 적재된 다른 프로그램을 실행

> CPU의 노는 시간을 줄이는 기법

 

다중프로그래밍 운영체제

 

 

 

 

 

 

 

 

다중프로그래밍 운영체제에 대한 이슈

 

 

큰 메모리 이슈

- 여러 프로그램을 동시에 메모리에 올려놓기 위해서는 메모리의 크기 늘릴 필요

 

프로그램의 메모리 할당 및 관리 이슈

- 몇 개의 프로그램 적재? 메모리 어디에 적재? 프로그램 당 할당하는 메모리 크기?

 

메모리 보호 이슈

- 프로그램이 다른 프로그램의 영역을 침범하지 못하게 막는 방법 필요

 

CPU 스케줄링과 컨텍스트 스위칭

- 실행시킬 프로그램을 선택하는 스케줄링 필요

- 프로그램의 실행 상태를 저장할 컨텍스트 정의 및 컨텍스트 스위칭 필요

 

 

인터럽트 개념 도입

- 운영체제가 I/O 장치로부터 입출력 완료를 전달받는 방법 필요

 

 

동기화

- 여러 프로그램이 동일한 자원을 동시에 액세스할 때 발생하는 문제 해결

 

 

교착 상태 해결

- 프로세스들이 상대가 가진 자원을 서로 요청하면서 무한대기하는 교착상태 해결

 

 

 

 

 

시분할 다중프로그래밍 운영체제

 

출현 배경

- 다중프로그래밍 운영체제와 거의 동시에 연구 시작

 

- 배치 처리 및 다중프로그래밍의 2가지 문제점

> 비 대화식 처리방식(non-interactive processing)

> 느린 응답시간, 오랜 대기 시간

프로그램을 제출하고 하루 후에 결과 보기, 사용자의 즉각적인 대응 없음

 

시분할 다중프로그래밍 (Time Sharing Multiprogramming) 운영체제의 시작

- 1959년 MIT 대학, John McCarty 교수에 의해 제안

> 빠른 프로그래밍 디버깅 필요에 의해 고안

 

- 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안

> 터미널: 키보드+모니터+전화선+모뎀으로 구성된 장치

> 사용자는 자신의 터미널을 이용하여 메인 컴퓨터에 원격 접속

> 운영체제는 시간을 나누어 돌아가면서 각 터미널의 명령 처리

 

- CTSS(Compatible Time Sharing System) 시분할 시스템 개발 (1962년 MIT)

 

 

 

 

 

 

 

 

 

운영체제의 종류

- UNIX 

 

-Linux

 

- MS-DOS

 

- MS Windows

 

- MacOS

 

- 모바일 운영체제

 

- chromeOS

 

 

 

 

UNIX 

- 멀티태스킹(Multi-tasking) 기반의 시분할(Time Sharing) OS

- 1964년, MIT, Bell Lab, GE 합작 GE-645용 OS, Multics 가 기원

- 1971년, Bell Lab 에서 Ken Thompson 및 Dennis Ritchie 가 개발

- UNIX 커널을 재컴파일하고 유틸리티를 제작하기 위한 C언어 파생

- TCP/IP, socket 등의 네트워크 프로토콜, 인터페이스 포함

 

 

UNIX-like OS

- POSIX (Portable Operating System Interface & UNIX)

- IEEE 에서 제정한 유닉스 응용 인터페이스 표준 규격

- POSIX 를 따르는 OS: Unix-like OS

- Linux, FreeBSD 등

 

Linux

- Linux Kernel + GNU (GNU/Linux)

- Multi-users, Multi-tasking, Multi-threads 기반의 Time sharing OS

- 1991년, 핀란드 헬싱키 대학의 Linus Benedict Torvalds 가 개발

- 교육용 UNIX-like OS 인 Minix 에서 파생, GPL License 채택

- 클라우드 90%, 스마트폰 82%, 임베디드 62%, 슈퍼컴퓨터 99% 점유

 

 

Linux 배포판

 

- Debian .deb 패키지, apt 패키지 관리자

Ubuntu

 

- RHEL (Redhat Enterprise Linux) .rpm 패키지, yum 패키지 관리자

CentOS, Redora

 

- SUSE Zypp 패키지 관리자

openSUSE

- Zentoo Linux

 

MS-DOS

- Microsoft Disk Operating System

- 1981년, MS 에서 IBM PC 용 OS 개발 외주로 출시

- Seattle Computer Products 사의 Tim Paterson가 개발한 86-DOS (Q-DOS)의 변형판

 

- Single-user, Single-tasking, Batch processing

> Command Line Interface (CLI)

> 1982 MS-DOS 1.0 부터 1994 MS-DOS 6.22 까지 출시

> cmd.exe 가 MS-DOS 의 CLI 참조

 

 

MS Windows

- Microsoft Windows

- MS-DOS + GUI (Graphic User Interfaces) + Multi-tasking

- 1985 년 Windows 1.0 이 도스의 확장 프로그램으로 배포

- 1990 년 Windows 3.0 출시

- 1995 년 DOS 와 분리된 독립 OS 인 Windows 95 출시

- Windows NT 등을 거쳐 현재 Windows 11 까지 출시

- Windows 10/11 에는 POSIX 호환 PowerShell 이 제공

 

 

Desktop에 대한 운영체제 점유율(2020, 2023)

 

macOS

 

- NeXTSTEP 의 후속 OS 인 Darwin 기반 Mac 전용 운영체제

- NeXTSTEP: 1985년 CMU 에서 개발한 Mach Kernel + UNIX BSD API - 이전 이름, OS 10

- 이전 (1984-2001년) 에는 Mac 운영체제로 System 1

- OS 9 사용

- 2016 년 파일시스템으로 APFS 개발 (APple File System)

 

모바일 운영체제

- Android, iOS, Windows Mobile/Phone, TIZEN

 

- Android

Google 개발, Linux 기반 Open source mobile OS

Android 1.0 (2008) - C..P 시작 네이밍

- Android 15 (2023) Samsung, LG, Xiaomi, Motorola 등에서 채택

Kernel + SDK 전부 공개

 

- iOS

Apple 개발, macOS 기반 (Darwin/UNIX 계열), 폐쇄성

iPhone, iPod Touch, iPad 에서 사용

Android 에 비해 상대적으로 강력한 보안성, 일관성, 연동성

 

728x90
profile

StudyRepository

@Minseo26262

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