티스토리 뷰
운영체제의 역할
컴퓨터시스템 = 사용자(사람, 프로그램, 장치) + 하드웨어 + 소프트웨어
운영체제는 하드웨어와 사용자 간의 1) 조정자 2) 자원관리자 3) 입출력장치와 사용자프로그램 제어 역할을 수행
🐷 운영체제의 목표
1) 편리성 (convenience)
2) 효율성 ( efficiency = 성능향상)
3) 안정성 (robustness)
4) 확장성
🐷 운영체제의 발전과정
초기 : 일괄처리 ( Batch System)
ex) omr 시스템
장점 : 한꺼번에 처리 가능
단점 : 단절되어 있다. (offline system)
어떻게 하면 오프라인 시스템의 성능을 향상 시킬 수 있을까 ?
-> 온라인 시스템 (데이터가 처리되고 나가기까지의 과정이 그대로 유지) 으로 바꿔줘야한다.
즉, 데이터를 입력장치로 받아들이고 cpu로 처리하고 출력장치로 보내는 과정이 필요하다. 그러나 CPU의 속도가 처리 장치에 비해 지나치게 빠르기 때문에 다음 처리까지 대기가 발생한다. (비효율성 증가)
-> 따라서, 읽을때마다 입출력장치가 버퍼에 저장해서 한방에 CPU에게 전달을 해준다. (버퍼링)
-> 그러나 버퍼링을 사용하게 되면 메모리의 한계 때문에 용량이 많이 필요하다. 용량을 많이 주면서 보다 저렴하게 할 순 없을까 ?
-> 메모리 대신에 디스크를 사용하자 ! (스풀링, spooling)
운영체제 유형별 특징
1) Multi Programming System ( = Multi tasks = Multi Process = Multi jobs)
기존 : single programming system (하나의 프로그램이 하나의 컴퓨터만 이용)
즉, 메모리에 프로그램이 달랑 하나였기 때문에 운영체제가 필요하지 않았다.
=> 하드웨어는 제한적이니 프로그램 여러개를 동시에 사용하면 효율성이 증대하지 않을까 ?
=> Multi Programming System
각각의 프로세스에서 수행되지 않는 다른 기기들이 놀지않고 모두 실행할 수 있는 방법은 없을까 ?
=> 출력 입력 처리를 한번에 하자
=> 공간이 허락하는 한 process를 많이 넣어주면 성능 증가
2) Time Sharing System (시분할 시스템, TSS)
여러명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리해준다.
하나의 CPU는 여러작업을 동시에 수행하지 못하기 때문에 CPU의 전체 사용시간을 작업 시간량으로 쪼개 그 시간량 동안만 번갈아가면서 CPU를 할당하여 각 작업을 처리한다.
🐷 3) Distributed Processing System (= 분산시스템)
별도의 컴퓨터들끼리 네트워크를 통해 연결되어 분산처리가 진행되는 방식
=> 반드시 네트워크가 필요
ex) 블록체인
🐷 4) Multi Processor System
분산처리 시스템이면서 돈을 덜 들게 할 수는 없을까 ? 의 생각으로부터 등장한 멀티 프로세서 시스템
입력장치 & 메모리는 한개 but CPU는 여려개
-> 비용 down 성능 up 신뢰성 up
왜 신뢰성이 증대할까 ? (중요)
여러개의 프로세스중 일부가 고장 (장애) 가 나더라도 나머지 멀쩡한 프로세서에 의해 실행이 가능하기 때문이다.
종류
1) Symmetric Multiprocessing (SMP)
: process 간의 주종관계 x
CPU의 속도는 매우 빨라 계산할 값을 레지스터에 최대한 빨리 가져가야하는데 이를 수행하지 못하니 ALU( 산술연산 )은 놀게된다.
따라서 cache가 등장한다. cache는 메모리에서 레지스터가 읽기 전에 한번에 왕창 읽어서 이를 저장한다. 즉, 효율성이 증대한다.
2) Asymmertric Multiprocessing (AMP)
: proces 간의 주종관계 o
🐷 5) Desktop System (단일 사용자 시스템)
🐷 6) Cluster System
: 대형 컴퓨터들이 많은 곳에서 사용한다.
처리 데이터가 깨졌을때 문제가 발생할 수 있으니 따로 분리해서 관리한다. 고성능 네트워크를 구축해야한다.
🐷 7) Real-Time System:
실시간 처리를 해야하고 데이터가 발생할 대마다 즉시 처리가 가능해야한다.
🐷 8) Client - Server System
서비스를 요청하는 클라이언트, 서비스를 제공하는 서버의 이중구조 시스템
웹기술을 이용한 대부분의 구조
9) P2P(Peer to Peer) System
클라이언트 서버 구조의 단점인 서버 과부하를 해결하기 위해 만든 시스템
서버를 거치지 않고 사용자와 사용자를 직접 연결 (서버의 부하가 분산되는 효과)
10) IoT (Internet Of Things, 사물 인터넷)
: 센서가 소형의 디바이스 저사양, 저기능에도 사용할 수 있게끔 맞게 운영체제를 운영
11) Cloud Computing
필요한 서비스를 서버에서 제공, 하드웨어를 포함한 시스템이 구름에 가려진 것처럼 사용자에게 보이지 않는 컴퓨팅환경
언제 어디서나 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅환경
문제: 모든 정보 & 서비스가 서버 (클라우드) 안에 있음
1) if 나랑 모든 서버랑 네트워크가 끊어지면 아무것도 못한다
2) 모든 데이터 &서비스가 클라우드로 가다보니 가격적 부담이 증대한다
=> 데이터를 바로 옆에서 써도 될것 같다. 네트워크가 끊어져도 문제가 발생하지 않는다.
=> 굳이 클라우드를 이용하지 않고 단말단에서 해결할 수 있는건 해결하자 ( edge computing)
🐷 12) edge computing
IoT가 발전할수록 처리한 센서의 수가 많아진다.
IoT 센서들과 클라우드 서버간의 경계에서 처리할 수 있는 데이터는 처리하여 부하를 줄이는 방식