운영체제의 역할
-컴퓨터 시스템 = 사용자 + 하드웨어 + 소프트웨어
운영체제는 하드웨어와 사용자(소프트웨어)간의 조정자, 자원관리자, 입출력장치와 사용자 프로그램 제어 역할을 한다.
여기서 사용자란 : 컴퓨터를 사용하는 사람 , 프로그램 , 장치 등등이 해당된다.
운영체제의 목표
-편리성, 효율성(성능 향상), 안정성 , 확장성
-
자원관리( 프로세스관리,cpu관리,메모리관리,입출력장치 관리)
-
하드웨어 인터페이스(cpu,주기억장치 등 특성이 다르더라도 일관성 있는 접근제어)
-
자원 보호 (타 사용자를 차단함)
-
사용자 인터페이스 (UI)
자원관리 - 효율성
자원 보호 - 안정성
하드웨어 인터페이스 제공 - 확장성
사용자 인터페이스 제공 - 편리성
운영체제의 발전과정
초기의 일괄 처리 시스템 : 1401 작업 , 7094 작업 , 1401 작업 다 나뉘었다.
Offline System : cpu와 입출력장치간의 속도 차이를 개선하였다.
Buffering : 메모리 버퍼를 이용하여 속도 차이를 개선
Spooling : 디스크의 스풀이라는 거대한 장소를 만듦.
운영체제 유형별 특징
-
Multi Programming System : 멀티 테스크 = 멀티 프로세스
-여러개의 프로세스들이 각각의 일을 처리함.
-
Time Sharing System (시분할시스템 : TSS)
-cpu 스케쥴링 , 다중 프로그래밍을 이용하여 각 사용자들에게 컴퓨터 자원을 분할하여 사용할 수 있게 해준다.
-
Distributed processing system (분산 시스템)
-인터넷에 연결된 여러 컴퓨터들의 처리 능력을 이용해 문제를 해결. (네트워크 필)
-
Multi processor system
-장점 : 처리율 증가, 비용 절감, 신뢰성 증가
Symmertric Multiprocessing을 요즘 많이 사용한다.
-
Cluster System
-여러개의 컴퓨터를 High Speed Network로 연결함. 각각의 컴퓨터는 하나의 storage를 공유함. 다른 컴퓨터가 죽으면 다른 컴퓨터가 역할을 수행하게 됨. 데이터는 하나의 storage에 저장됨.
-
Real time System
-데이터가 발생할 때 마다 즉시 처리함. 처리시간이 단축되고 처리 비용이 절감함. 데이터 발생 지점에서 직접 인출력을 담당함. 특정 상태를 재현할 수 없음.
-
Client Server System
-서비스를 요청하는 클라이언트, 서비스를 제공하는 서버의 이중 구조 시스템. 웹 기술을 이용한 대부분의 구조.
Web이 나오면서 대중화가 되었고, 사용자가 많을수록 서버의 부하가 증가한다.
-
P2P
-클라이언트 서버 구조의 단점인 서버 과부하를 해결하기 위해 서버를 거치지 않고 사용자와 사용자를 직접 연결해 서버의 부하가 분산되는 효과를 보임.
-
사물인터넷
-
클라우드 컴퓨팅
-
Edge Computing
-사물인터넷이 발달할 수록 센서의 수가 많아짐. 문제점은 네트워크의 전송량이 증가하고, 클라우드 서버 부하가 증가한다.
센서들과 클라우드 서버간의 경계에서 처리할 수 있는 데이터는 처리하여 부하를 줄이는 방식
세대별 발전 과정
일괄 작업 시스템. (버퍼링과 스풀링이 나오는데, 버퍼링이 먼저 나옴)
운영체제의 세부 기능
메모리 관리, 프로세스 관리, 입출력 장치 관리, 파일 관리
기타 기능 : 보안, 네트워킹 / 분산 , 컴퓨터와 대화하는 쉘
메모리 관리 기능
사용량 모니터, 주소 매핑, 실행과 해제
프로세스 : 프로세스는 실행주인 프로그램으로 실행을 위해 자원이 할당 된 프로그램을 얘기한다.
자원은 프로세서 점유, 메모리, 파일, 입출력 장치 등을 의미한다.
운영체제의 운영은 ? 프로세스 생성과 제거, 중지와 재수행, 동기화, 상호 통신 등등
입출력 장치 관리 기능
사용자가 자세한 하드웨어 특성을 알지 못해도 자유롭게 활용 가능 하게 함
프로세서와 입출력 장치 가의 속도의 차이를 해결함(스풀링 버퍼링)
파일 관리 기능
다양한 저장장치를 사용할 수 있도록 기능을 제공한다. 파일을 생성하고 제거하고 디렉토리의 생성 제거 등을 맡는다.
시스템 호출 서비스 : 커널을 스스로 보호하기 위해 만든 인터페이스
멀티 프로그래밍 환경에서 응용프로그램이 작동하면서 공유 자원들을 사용하며 다른 응용프로그램의 영역을 침해하는 것을 막기 위해 커널모드를 도입함
직접 접근 vs 시스템 호출 접근
함수를 이용하는 방식은 듯 함.
부팅 서비스
부팅 : 운영체제가 메모리로 로딩되는 과정을 부팅이라고 함.
Booting Strap Loader : 디스크 0트랙에 위치하며 운영체제를 메모리로 로딩하는 프로그램을 의미한다.
부팅 절차 :1. 파워를 킨다. 2. 바이오스 부팅 스트랩 로더가 작동한다.3. 하드웨어를 체크한다. 3. 운영체제를 메모리로 로드한다. 5. 실행 완료
계층적 구조
유사한 기능끼리 그룹으로 묶은 것.
모듈화, 계층간 독립성 보장, 결합도를 낮춘다. 유지보수가 쉬워야 한다. 검증과 오류 수정이 용이.
계층이 많을수록 성능 저하가 예상된다.
커널
메모리에 상주하는 운영체제의 핵심 모듈을 의미한다.
마이크로 커널 vs 단일 커널
단일 커널 : 모든 커널의 기능을 내부 시스템 호출로 다 묶어서 해버림
마이크로 커널 : 꼭 필요한 기능만 넣고 사용자 모드에서 다른 기능을 사용할 수 있게 함.
마이크로 커널의 장점 : 커널이 가볍다. 한 부분에서 발생한 문제가 시스템 전체에 영향을 주지 않는다. 서버 개발 용이 + 기능 변경 용이 , 실시간 시스템 활용
단점 : 프로세스 간 통신 발생을 최소화 해야 한다. 속도가 느리다.