운영체제의 역할
1. User Interface 편리성
CUI(Character User Interface) > 과거에는 문자를 기반으로 사용자가 입력과 결과를 받아보았다.
GUI(Graphical User Interface) > 지금은? 이미지 형태로 사용
EUCI(End-User Comfortable Interface) > 특정한 목적을 가진 사용자를 위한 인터페이스
2. Resource Management(효율성)
만질 수 있는 Hw 리소스 관리 (proessor, memory, I/Odevices 등)
만질 수 없는 Sw리소스 관리 (file, application, message, signal 등)
한정된 자원을 관리하는것은 효율성을 높인다.
3. 프로세스와 쓰레드 관리
열심히 관리중
4. 시스템 보호(Sysem Management)
사용자가 불법적으로 시스템 사용하려 한다? 이를 보호하는 것도 OS
컴퓨터 시스템의 구성
커널은 운영체제의 핵심을 모아둔 것이라 생각하자
시스템 콜 인터페이스는
사용자가 커널을 직접 Access 하여 마음대로 조작하면 하드웨어에도 문제가 발생 그러면 안되기 때문에 사용자가 필요한 기능이 있으면 System Call Interface라는 통로를 통해 OS에게 요청한다.
다르게 보면 시스템 콜 인터페이스는 커널이 제공하는 기능들 중 사용자가 사용 가능한 기능들을 모아놓은 것이다.
운영체제의 구분
1. 동시 사용자 수
single-user system > 동시에 한 명의 사용자만 시스템 사용가능하다 ex)개인용 장비 pc, monile 등에 사용
한명의 사용자가 모든 시스템 자원을 독점하여 비교적 간단하며 자원관리 및 시스템 보호 방식이 간단하다.
multi-user system > 동시에 여러 사용자들이 시스템을 사용하며 각종 시스템 자원들에 대한 소유 권한 관리가 필요하며, 기본적으로 여러 개의 프로그램을 돌릴 수 있는 멀티태스킹 기능이 있어야 한다. 이런 걸 하려면 OS의 기능이 당연히 단일 시스템보다 구조가 복잡하다.
ex) Unix , Linux, Windows server 등 서버 클러스터 장비 등에 사용
2. 동시에 실행 가능한 프로세스 수
Single-tasking system : 시스템 내에 하나의 작업 프로세스만 존재하는 작업으로 하나의 프로그램을 실행했다면 이 프로그램이 종료될 때까지 다른 프로그램을 실행 못하고 이전 프로그램이 실행을 마친 뒤 다른 프로그램이 실행된다.
요즘은 찾아보기가 조금 힘들다 예전에 MS-DOS 가 이런 방식이었다.
운영체제 구조가 간단하다
Muli-tasking system : 동시에 여러 프로세스 수행이 가능 ex) 윈도에 여러 창 띄워놓고 사용
운영체제 기능 및 구조가 복잡하다.
Unix/Linux, windows 등 대다수가 이 방식이다.
3. 작업 수행 방식
3-1) batch systems(1950~1960)
모든 시스템을 중앙(전자계산 소 등)에서 관리 및 운영 사용자의 요청 작업(천공카드 등)을 일정 시간 모아(batch) 두었다가 한꺼번에 처리하는 일괄 처리 시스템
장점 :
배치 시스템은 시스템 지향적이라 처리 효율이 좋고 많은 사용자가 시스템 자원을 공유한다는 장점이 있다.
단점 :
그러나 같은 유형의 작업들이 모이기를 기다려야 하기 때문에 생산성이 저하되었고 많은 작업을 모이기를 기다렸다 출력을 하기까지 응답 시간이 길다는 단점이 있다.
기다리다 지친다... 시분할 등장!
3-2) Time Sharing System(시분할 시스템 1960~1970)
시간을 나누어서 프로그램을 처리하는 시스템이다. 요즘 쓰는 시스템도 시분할 시스템을 사용한다.
여러 명의 사용자가 동시에 사용하기 때문에 시스템이란 자원을 동시에 사용하므로 각 사용자의 파일에 대한 관리가 필요하고 메모리도 많이 필요하여 OS에서 파일 시스템 및 가상 메모리 개념이 등장하고 관리하기 시작
시분할 시스템은 사용자 지향적이며 대화형 시스템으로 단말기를 사용하였다.
시분할 시스템의 장점 : 응답 시간을 단축시켜줬고 이는 사용자 측면에서 생산성을 향상해 주었다.
시분할 시스템의 단점 : 접속하는데 따른 통신 비용의 증가가 되었고 보안에 대한 문제가 등장했다. 또한 너무 ㅁ낳은 사람들이 시스템에 접속하니 부하가 커졌고 사용자가 느끼기에 느려지는 단점이 생겼다.
나 혼자 사용하고 싶다.... 개인 컴퓨터!
3-3) Personal Computing
개인이 시스템 전체를 독점!
예전에는 컴퓨터는 비싼자원이므로 최대한 활용하기 위해 CPU를 쉬지 않고 돌려 활용률을 높이기 위해 노력했다.
그러나 개인 시스템이 등장하며 CPU 활용률이 고려의 대상이 아니게 되었다. 이보다 사용자 자신이 얼마나 편리하게 시스템을 사용하는지가 중요하게 되었다.
혼자 쓰기에 OS는 상대적으로 단순해지고 사용자의 편리성을 지원하는 기능들이 다양해졌다.
장점은 혼자 쓰니 빠른 응답 시간을 기대할 수 있었고
단점으로는 개인 시스템이니 가격을 낮추어야 했고 이에 따라 자연스레 성능은 낮아지게 된다.
성능도 좋고 싶은데...!
3-4) Parallel Processing System(병렬 처리 시스템)
컴퓨터 안에 CPU 여러 개 박자~!
단일 시스템 내에 둘 이상의 프로세스를 사용하여 동시에 둘 이상의 프로세스를 지원!
CPU는 여러 개지만 나머지 메모리 등의 자원은 서로 공유하자(Tightly-coupled system)
사용 목적 :
성능을 높이는 게 목표이고 컴퓨터를 쓰는데 중 하나의 CPU가 고장이 나도 다른 CPU가 대신 일해줘서 믿고 일할 수 있는 신뢰성 향상
CPU가 많아지면 한쪽 CPU 쪽으로만 일이 몰리거나 그러면 다른 CPU 섭섭하니 이들 간의 관계 및 역할 관리가 필요해졌다.
그래도 모자라 CPU 더 넣어줘!! 물리적으로 힘든데... 대신 다른 컴퓨터 연결시켜줄게
3-5) Distributed Processing System(분산처리 시스템)
네트워크를 기반으로 구축된 병렬 처리 시스템이다.
분산처리 시스템은 물리적 분산을 통신망을 이용해 서로 연결하였으며 각 노드들은 자신만의 OS를 가지고 있지만 이들을 개별적으로 관리하기 힘드므로 이들을 묶어서 관리해주는 분산 운영체제를 통해 이들을 관리한다.
분산처리 시스템의 장점은 자원을 쉽게 붙이고 공유함으로써 높은 성능을 기대할 수 있다. 또한 한 자원이 뻑나도 다른 자원이 대신하므로 높은 신뢰성과 확장성을 기대할 수 있다.
단점은 구축과 유지보수 관리가 어렵다.
분산처리 시스템을 이용하는 예로는 Cluster system(슈퍼컴) , Client-server system, P2P 등이 있다.
3-6) Real-time Systems(실시간 시스템)
실시간 시스템은 작업을 처리하는 데 있어 제한시간을 갖는 시스템이다.
어떤 작업을 할 때 제한된 시간 안에 서비스가 제공되지 않으면 안 되는 서비스들이 있다 이들에게는 자원 활용을 효율적으로 하는 것보다 시간 내에 결과를 얻어내느것이 더 중요하다.
작업의 종류
hard real time task
예를 들어 원자력 시스템을 관리하는 시스템이 있고 이 시스템이 발전소의 온도를 1초마다 관리해 주어야 한다했을때
만약 1초 이내 온도 체크를 못하면? 원자력 발전소가 폭발할 수 있다. 따라서 제한 시간 내에 결과를 보장하지 못하면 치명적 결과를 초래한다.
이렇게 제한된 시간 안에 서비스하지 못할 경우 시스템에 치명적 영향을 끼치는 task를 hard real time task라 부른다.
이런 종류의 task의 예제로는 위의 예와 같은 발전소 제어, 군사 무기 제어 등이 있다.
Soft real-time task
하드 리얼 타임 태스크처럼 시스템 자체 치명적 영향은 초래하지 않지만 사용자가 불편함을 느끼는 시스템이 있다.
예를 들면 동영상 서비스이다 1초당 30초의 이미지를 전송해야 깔끔한 이미지가 나오는데 15장만 보내 화면이 깨지거나 하더라도 사용자는 약간의 짜증, 불편함을 느끼지만 이 자체가 치명적 결과를 초래하지는 않는다.
운영체제의 구조
. 커널(kernel)
OS의 핵심 부분이며 가장 빈번하게 사용되는 기능들을 모아두었다. 빈번하게 사용되므로 메모리에 항상 상주한다.
커널은 핵(neucleus), 관리자(supervisor) , resident 프로그램, 제어 프로그램 등으로도 불린다.
커널의 주요 기능은 Resource를 관리하는 것이다.
. 유틸리티(Utility)
운영체제에서 커널을 제외한 나머지 부분에 있는 것들을 말하며
이들은 자주 사용되지 않기에 비상주 프로그램이다.
대표적으로 UI 등의 서비스 프로그램이 있다.
1. 단일구조
단일구조 운영체제는 운영체제 기능을 하나의 거대한 커널로 모아둔 구조를 말한다.
단일구조의 장점은 커널 안 기능들 사이에 데이터를 주고받을 때 모듈 간 직접통신이 가능하여 빠르고 효율적으로 자원관리 및 사요 가 가능하다
하지만 기능이 추가될수록 커널이 거대해질 것이고 이는 오류나 버그, 추가 기능 구현 등의 유지보수가 어렵다.
또한 커널에 모든 기능이 있어 한 모듈에 문제가 생겨도 전체에 영향을 줄 수 있다.
2. 계층구조
한 곳에 모아두지 말고 기능별로 떼어서 계층별로 두자 -> 계층구조
기능별로 따로따로 분리한 것을 모듈화라 하고 모듈화의 장점은 각 기능의 구현하는데 각 기능에만 집중하면 됨으로 설계와 구현이 단순하다.
계층 간 검증 및 수정이 용이하다.
단점으로는 단일구조 대비 성능이 저하된다. 이유는 원하는 기능 수행을 위해 여러 계층을 거쳐야 하기 때문이다.
3. 마이크로 커널 구조
커널에는 필수 기능만 담아 크기를 최소화하고 나머지는 사용자 영역에서 응용프로그램처럼 실행하는 구조
운영체제의 기능
운영체제가 하는 기능은 다양한 리소스의 관리이다.
1.Process Management
> 프로세스는 커널에 등록된 실행 단위(실행 중인 프로그램)
사용자 요청을 처리하고 기능을 수행하는 수행의 주체로도 정의할 수 있다.
운영체제는 이 프로세스를 생성 삭제 상태를 관리하고 자원도 할당하며 프로세스 간 통신 및 동기화를 담당한다.
또한 여러 프로세스가 하나의 자원을 동시에 원할 때 (교착상태 deadlock) 중재 역할도 한다.
프로세스의 정보를 관리하기 위해 Process Control Bloc도 가지고 있다.
2. Processer Managerment(CPU)
> 큰 그림에서 프로세서는 중앙처리 장치로 봐도 좋다.
중앙 처리 장치 CPU는 프로그램을 실행하는 핵심 자원이며 OS는 프로세스의 처리 순서를 결정하여 어떤 프로세서에게 어떠한 프로세스를 줄지 관리하는 프로세스 스케쥴링과 프로세서 할당 관리 도 한다.
3.Memeoty Management(메모리 관리)
> OS는 Multi-user, Multi-tasking 시스템에서 프로세스에 대한 메모리의 할당 또는 회수 역할을 수행하며 메모리의 여유 공간 역시 관리한다. 또한 각 프로세스의 할당 메모리에 다른 접근을 막는 보호 역할도 OS가 한다.
4.File Management(파일 관리)
파일은 논리적 데이터 저장 단위이며 파일이라는 소프트웨어 리소스 관리 또한 OS가 한다.
5.I/O Management(입출력 관리)
입출력은 반드시 OS를 거쳐야 한다.
이외에도 운영체제가 관리하는 자원은 아래와 같이 다양하다
DIsk, Networking, Security and Protection System, Command interpreter system , System call interface
'OS > os 공부' 카테고리의 다른 글
6.Process Synchronization & Mutual Exclusion (0) | 2021.12.27 |
---|---|
5. 프로세스 스케쥴링 (0) | 2021.12.26 |
4. Thread Management (0) | 2021.12.25 |
3. 프로세스 관리 (0) | 2021.12.25 |
1. 운영체제_컴퓨터 시스템 오버뷰 (0) | 2021.12.24 |