02 운영체제의 소개
1. 운영체제 개요
- 운영체제란 무엇인가?
- 컴퓨터 사용자와 컴퓨터 하드웨어 간의 중간 매개체 역할을 하는 프로그램
- 운영 체제의 목표
- 사용자 관점
- 사용자 프로그램을 실행하고 사용자의 문제 해결을 더 쉽게 만든다
- 컴퓨터 시스템을 편리하게 사용할 수 있도록 한다(사용자 편의 환경)
- 시스템 관점
- 컴퓨터 하드웨어를 효율적으로 활용한다(자원 관리자)
- 사용자 관점
컴퓨터 시스템의 다단계 구성
- 컴퓨터 시스템의 4가지 구성 요소
- 하드웨어\(_{Hardware}\): 기본 컴퓨팅 자원을 제공
- CPU, 메모리, 입출력 장치
- 운영 체제\(_{Operating \ System}\): 다양한 응용 프로그램 및 사용자 간에 하드웨어를 사용하고 조정하는 역할 즉, 하드웨어 자원의 사용을 효과적으로 관리하고 응용 프로그램 및 사용자 간의 상호 작용을 지원
- 응용 프로그램\(_{Application \ Programs}\): 시스템 자원을 사용해 사용자의 컴퓨팅 문제를 해결하는 방법을 정의
- 사용자\(_{Users}\): 이는 컴퓨터 시스템을 사용하는 사람들, 기계 또는 다른 컴퓨터를 의미
- 사용자는 컴퓨터와 상호 작용하며 응용 프로그램을 실행하고 데이터를 처리하는 역할을 함
- 하드웨어\(_{Hardware}\): 기본 컴퓨팅 자원을 제공
OS의 역할
- 기능적인 부분
- User Interfaces
- 사용자와 컴퓨터 시스템 간 상호 작용
- System Calls
- 응용 프로그램이 운영 체제의 서비스 및 기능을 활용 가능하게 하는 인터페이스
- 응용 프로그램이 하드웨어 리소스에 직접 액세스하는 것을 방지하고, 운영 체제를 통해 안전하게 리소스를 사용할 수 있도록 한다.
- Services
- 운영 체제가 제공하는 다양한 기능 및 서비스를 관리하고 실행
- User Interfaces
- OS는 결국 서비스를 사용자가 사용하기 위해 안전하게 보호하는 역할
- 사용자 서비스를 편리하게 하는 환경
- 사용자 인터페이스
- 명령줄 인터페이스\(_{CLI}\) , 그래픽 사용자 인터페이스\(_{GUI}\) , 일괄 처리 인터페이스 등의 사용자 인터페이스가 있어야한다.
- 프로그램 실행
- 시스템은 프로그램을 메모리로 로드하고 해당 프로그램을 실행할 수 있어야 한다.
- 프로그램은 정상적으로 종료될 수도 있고 비정상적으로 종료되면 오류를 표시한다.
- 입출력 작업
- 실행 중인 프로그램은 파일 또는 입출력 장치와 관련된 입출력을 필요로 할 수 있다.
- 파일 또는 입출력 장치와 상호 작용하는 작업을 나타낸다.
- 파일 시스템 조작
- 프로그램은 파일 및 디렉토리를 읽고 쓰고, 생성하고 삭제하며, 검색하고 파일 정보를 나열하며 권한 관리를 한다.
- 통신
- 프로세스는 동일한 컴퓨터 내에서 또는 네트워크를 통해 컴퓨터 간에 정보 교환이 가능하다.
- 통신은 공유 메모리를 통해 이뤄질 수도 있고, 메시지 전달을 통해 이뤄질 수도 있다.
- 오류 감지
- 운영 체제는 잠재적 오류에 대해 지속적으로 인식해야 한다.
- 이러한 오류는 CPU 및 메모리 하드웨어에서 발생할 수도 있고, I/O 장치나 사용자 프로그램에서 발생할 수도 있다.
- 각각의 오류 유형에 대해 운영 체제는 올바르고 일관된 컴퓨팅을 보장하기 위한 적절하게 처리한다.
- 디버깅 도구는 사용자와 프로그래머가 시스템을 효율적으로 사용하고 오류를 찾는 데 도움을 준다.
- 사용자 인터페이스
-
자원 관리
- 자원 할당
- 여러 사용자나 여러 작업이 동시에 실행될 때, 각각에게 자원을 할당해야 한다.
- 다양한 종류의 자원이 존재하며, 일부 자원은 특수한 할당 코드를 필요로 할 수 있고, 다른 자원(예: I/O 장치)은 일반적인 요청 및 해제 코드를 갖고 있을 수 있습니다.
- 계정
- 어떤 사용자가 얼마나 많은 어떤 종류의 컴퓨터 자원을 사용하는지 추적하기 위해 계정이 필요로 한다.
- 보호와 보안
- 보호는 시스템 자원에 대한 모든 액세스가 통제되도록 하는 것을 포함한다.
- 시스템의 보안은 외부자로부터 시스템을 보호하는 것을 의미하며, 사용자 인증을 필요로 하며, 외부 I/O 장치를 부적절한 액세스 시도로부터 방어해야 한다.
- 시스템이 보호되고 안전하게 운영되려면 시스템 전반에 걸쳐 조치가 취해져야 한다.
- 자원 할당
2. OS의 종류
동시 사용자 수에 따른 OS 분류
- Single User System
- OS가 한 사용자만이 시스템을 사용할 수 있도록 지원
- 시스템의 모든 자원들이 사용자에 귀속
- Mult User System
- 동시에 여러 사용자들이 시스템을 사용할 수 있도록 지원
- 각종 시스템 자원(파일 등)들에 대한 소유 권한 관리 필요
- OS의 기능 및 구조가 복잡해짐
작업 처리 방법에 따른 OS 분류
- Single Tasking
- 시스템 내에 하나의 작업(프로그램, 프로세스)만 존재, 실행 가능
- 하나의 프로그램 실행을 마친 뒤에 다른 프로그램의 실행을 시작
- OS의 구조가 단순함
- Multi Tasking
- 동시에 여러 작업의 수행을 지원
- 병행 수행으로 인한 문제점들의 관리 필요
- 운영체제의 기능 및 구조가 복잡해짐
사용 환경에 따른 OS 분류
- 일괄처리 시스템\(_{Batch \ Systems}\)
- 사용자의 요청 작업들을 일정 시간 모아 두었다가 한번에 처리하는 방식
- 전자계산소 등에서 컴퓨터 시스템의 일체의 장비들을 관리, 운영
- 시스템 지향적인 환경
- 장점
- 작업처리량\(_{Throughput}\) 향상
- 자원활용도\(_{Resource \ Utilization}\) 증대
- 단점
- 생산성\(_{Productivity}\) 저하
- 반환시간\(_{Turnaround \ Time}\)이 길다 (약 6시간)
- 시분할 시스템\(_{Time \ Sharing \ System}\)
- 다수의 사용자들이 컴퓨터 시스템과 직접 대화형으로 작업 처리
- 다수의 사용자가 프로세서 시간을 공유
- Conversational system, Interactive system
- 단말기\(_{Terminal}\) 사용
- 사용자 지향적인 환경
- 장점
- 응답 시간\(_{Response \ Time}\)s 단축
- 생산성\(_{Rroductivity}\) 향상
- 단점
- 통신선 비용 증가
- 분산 시스템\(_{Distrbuted \ Systems}\)
- 네트워크 기반의 일관된 환경 구축을 위해 구성된 시스템
- 클라이언트-서버 환경
- 특성
- 각각 운영체제 탑재한 다수의 범용 시스템으로 구성
- 물리적인 분산, 통신망 이용한 상호 연결
- 분산운영체제 존재
- 은폐성\(_{Transparency}\)
- 각 구성 요소들간의 독립성유지, 공동작업 가능
- 장점
- 적은 비용, 고 성능
- 확장성, 신뢰성/가용성, 확장 가능성
- 단점
- 구축 어려움
- 실시간 시스템\(_{Real \ Time \ Systems}\)
- 입력 작업이 제한 시간을 갖는 경우가 있는 시스템
- 시스템 자원의 활용보다 작업별로 제한 시간 내에 서비스를 완료하는 것이 중요
- 작업 유형
- hard real-time job
- 엄격한 시간 제한(예: 항공기 비행 제어 시스템)
- soft real-time job
- 유연한 시간 제한(예: 스트리밍 비디오)
- non-real-time job
- 시간 제한이 없음
- hard real-time job
- 요구되는 기법
- 실시간 프로그래밍 언어 및 컴파일러
- 실시간 프로세스 스케줄링 기법
- 실행 중인 다양한 작업 간 우선순위와 시간 할당을 관리하기 위한 스케줄링 기술이 필요하다.
3. OS 발달 과정
아래 표 정도만 알고 있으면 될듯
0세대 (1940)
- 초기 시스템에는 운영체제가 없었으며, 사용자가 직접 기계어를 사용해 명 령문을 작성
- 프로그램을 작성할 때 컴퓨터에 필요한 작업을 모두 포함하고, 모든 명령어를 명시적으로 표현
- 모든 작업은 예약을 통해 진행되고 컴퓨터는 프로그래머가 메인 콘솔에서 수동으로 운영
1세대 (1950)
- 버퍼링, 스풀링, 일괄처리 시스템
- 1952년 초, 자동차 제조회사 GM의 연구실에서 IBM 701 운영체제 개발, 이 것이 운영체제의 효시이다.
- 1955년, GM과 북아메리가 항공사가 IBM 704 운영체제를 공동으로 개발.
- IBM 사용자협회 SHARE(Semi-Automatic Business Research Environment) 에서 운영체제에 대한 토론회를 육성, 1957년까지 IBM 704를 위한 자체 운 영체제를 개발.
- IBM 1400 계열 같은 소형 컴퓨터는 운영체제 없이 작동하며, 입출력 제어 시스템인 IOCS(Input/Output Control System) 패키지를 사용.
- 버퍼링, 스풀링 기법 적용
- 초기 운영체제는 설치 시간(Setup Time)과 철거 시간(Teardown Time) 낭비를 줄이는데 관심을 가짐.
- 설치 시간 : 작업을 컴퓨터 시스템에 올리는 필요한 시간.
- 철거 시간 : 작업을 컴퓨터 시스템에서 해체하는데 필요한 시간.
- 초기 운영체제는 설치 시간(Setup Time)과 철거 시간(Teardown Time) 낭비를 줄이는데 관심을 가짐.
- 유휴 기간을 줄이기 위해 작업을 일괄 처리하여 성능 향상.
- 운영체제 개발 전의 작업은 카드에서 개별적으로 적재, 실행 중에는 각 작업이전 시스템을 차지.
- 각 작업은 완료 또는 오류가 발생할 때까지 실행, 작업이 끝나야 오퍼레이터가 기존 프로그램과 카드를 제거하여 다음 작업을 실행 가능.
- 이 과정에서 시스템은 유휴 상태가 되므로, 이를 줄이고 성능을 향상시키기 위해 작업을 소형 보조 컴퓨터의 테이프에 옮긴 다음 나중에 대형 컴퓨터로 처리 되는 과정을 채택
- 하드웨어 장치의 독립성을 위해 시스템 파일명 등장.
- 사용자가 하드웨어 장치 번호를 직접 코드화할 필요가 없어졌으며, 카드를 읽는 장치에 대해 표준 시스템 입력 파일, 인쇄 출력 장치에 대해서 표준 시스템 출력 파일을 지정 가능.
- 어셈블러와 컴파일러에서 링커(Linker)와 로더(Loader)로의 변환이 원활해 짐.
2세대 (1960)
- 다중 프로그래밍, 다중 처리, 시분할 시스템
- 일괄 처리 형태로 처리량을 향상시키며, 장치 독립성이라는 개념으로 하드
웨어 관리가 편리해 짐.
- 사용자 프로그램에서 테이프 드라이브를 지정, 운영체제가 현재 사용되고 있지 않는 테이프 드라이브를 찾아 오퍼레이터에게 테이프를 드라이브에 걸어줄 것을 지시함.
- 다중 프로그래밍
- 여러 프로그램이 메인 메모리에 공존, 프로세서를 작업 간에 수시로 번갈아 할당.
- 다중 처리 시스템
- 시스템의 처리 능력을 증진시키기 위해 한 컴퓨터 시스템에 여러 개의 프로세서 사용.
- 시분할 시스템
- 사용자가 터미널을 통해 컴퓨터와 직접 접촉하기 위해 개발.
- 사용자와 대화 방식으로 작동하며, 사용자가 컴퓨터에 요구 사항을 입력하고 컴퓨터가 요구를 처리하여 사용자의 터미널로 응답.
- 실시간 시스템
- 즉시 응답한다는 점이 특징으로, 컴퓨터가 가솔린 정제 등의 공정을 제어하는데 사용되며 발전하기 시작함.
- 군용 실시간 시스템은 적의 공중 공격에 대비해 동시에 수천 지점을 감시하기 위해 개발.
- 필요할 때 즉시 사용할 수 있고 빠른 응답이 중요하므로 활용도가 높지 못하고 비용이 많이 듬.
3세대 (1960)
- 범용 시스템, 다중 모드 시스템
- 1964년 IBM 시스템/360 계열 컴퓨터로부터 시작.
- 범용 시스템으로 설계, 육중하며 모든 사용자에게 모든 기능을 제공할 수
있도록 제작.
- 다량의 컴퓨터가 판매되었으나, 이러한 기능이 필요 없는 사용자에게 실행 시간의 과부하, 시스템 이해를 위한 기간, 오류 발생 시 수정 시간, 시스템 유지 등에 있어 많은 비용 부담의 단점을 가짐.
- 다중 모드 시스템
- 일괄 처리, 시분할 처리, 실시간 처리, 다중 처리를 모두 제공.
- 고가이며 계획한 시간과 예산을 초과하여 완성되었으며 사용에도 고도의 훈련이 필요.
- 사용자와 하드웨어 사이에 소프트웨어 계층 도입.
- 하드웨어에 대한 관점 없이 소프트웨어에 의해 형성된 관점을 보게 됨으로 사용이 어려우며, 간단한 작업 수행에도 복잡한 작업 제어 언어(JCL, Job Control Language)의 이해가 필요함
4세대 (1970)
- 네트워크, 가상 머신, 분산 처리 시스템, 개인 컴퓨터
- 통신 발달과 더불어 컴퓨터 네트워크와 온라인 처리가 사용됨.
- 다양한 형태의 단말기를 이용하여 멀리 떨어진 지역의 컴퓨터를 네트워크를 통해 사용 가능.
- 마이크로프로세서의 등장으로 개인용 컴퓨터를 가짐.
- 개인용 컴퓨터
- 데이터 통신 인터페이스를 갖추어 터미널로 사용.
- 시분할 모드로 한정된 컴퓨터만 사용해야 하는 제약 없이 지역적으로 멀리 떨어진 여러 시스템과 통신이 가능하다.
- 통신선을 통과하는 정보의 안전한 관리 문제가 대두되며 정보 보호가 중요한 관심사로, 교신 내용 유출 시에도 지정한 수신자 외에 데이터 사용이 불가능하도록 하는 부분이 주요 이슈다.
Unix OS 발달 과정
그림 출처: 위키백과
4. OS의 구성
위 그림처럼 계층적인 구조를 띈다.
커널\(_{kernel}\)
-
커널의 주요 기능
- 하드웨어 자원 관리
- 소프트웨어 자원 관리
- OS의 핵심부분 (booting 후 memory에 상주)
- 사용자 및 실행 프로그램들을 위해 빈번히 사용되는 기능 담당
- 주로 자원의 관리 기능
- 동의어
- 핵\(_{nucleus}\)
- 관리자\(_{supervisor}\) 프로그램,
- 상주 프로그램\(_{resident \ program}\)
- 제어 프로그램\(_{control \ program}\)
유틸리티 프로그램\(_{utility \ programs}\)
비상주 프로그램, 서비스 프로그램
주로 사용자 인터페이스 기능
시스템 호출\(_{system \ call}\)
- 실행 중인 프로그램과 운영체제 간의 인터페이스
- 응용 프로그램은 스스로 제어할 수 있는 권한이 없음
- 때문에, 커널의 도움을 받아 os에서 처리를 해야함
- 프로그램과 커널 사이의 중간 매개체라 생각하면 됨
5. OS 기능
프로세스\(_{process}\) 관리
- 실행중인 프로그램, 시스템 내부의 작업단위
- 사용자의 명령 또는 작업 요청이 컴퓨터 시스템에 입력되고 그 수행이 종료되지 않은 상태
- 프로세스의 상태
- 실행 상태, 준비 상태, 대기 상태 등
- 각 상태로 전이하면서 프로세스가 동작
- 실행 → 준비 → 대기 → 실행
- 프로세서
- 처리장치\(_{CPU}\)
- 프로그램을 실행시키는 핵심 자원
- 기능
- 프로세스 생성 및 삭제
- 프로세스 중단 및 재개
- 프로세스 동기화
- 프로세스 통신
- 교착 상태 처리
- 프로세스 관리 정보 (운영체제가 프로세스 관리를 위해 사용하는 정보)
- 각 프로세스들의 상태
- 특정 상태에 있는 프로세스들이 요구한 자원 (CPU, 기억장치, 파일, I/O)
- 각 프로세스들에 대해 지금까지의 총 실행시간 등
- 여러 프로세스간 자원 공유 관리
- 2개 이상의 파일을 수정할 경우 파일이 깨질 수 있는것을 보완
- 데이타의 무결성\(_{integrity}\) 유지
- 프로세스 스케줄링\(_{process \ scheduling}\)
- 시스템 내의 프로세스 실행 순서 결정
- 프로세스 할당 관리 (다중 프로세서의 경우)
- 각 프로세서들에 대해 프로세스 배당 결정 및 운영
기억장치\(_{memory}\)
- 각각 자신의 주소를 가지는 단어와 바이트의 대용량 배열로 구성
- CPU와 입출력 장치에 의해 공유되는 접근 가능한 자료 저장
- 주기억 장치: CPU가 직접 주소로 지정할 수 있는 유일한 기억 장치
- multi-user, multi-tasking 시스템에서의 기억장치 관리
- 각 프로세스에 대해 주기억장치 할당, 기록, 반환
- 주기억장치의 빈 공간에 대한 기록, 유지
- 주기억장치 용량 부족 시 이에 대한 처리
- 각 프로세스의 할당 영역 보호 (다른 프로세스의 영역을 침범하지 않게)
- 운영체제의 기억장치 관리 필요
- 주기억 장치 할당 방법
- 사용자 프로그램 전체를 적재
- 주기억 장치 낭비, 적재가능 프로그램 수 줄임
- 구현이 쉬움
- 사용자 프로그램 중 필요한 일부만 적재\(_{virtual \ memory \ concepts}\)
- 주기억 장치 낭비 줄임
- 실행 도중 보조기억장치 접근이 요구됨 (문제점?)
- 속도가 느려짐
- 사용자 프로그램 전체를 적재
- 기능
- Memory usage book keeping
- 어느 부분이 누구에 의해 현재 사용되고 있는지 점검
- Choose the process to be loaded when there is space (fitting)
- Allocation and de-allocation of memory space
- Memory usage book keeping
댓글남기기