이화여대 반효경 교수님의 운영체제 강의(14년도)를 듣고 정리한 내용입니다.
강의링크
운영체제란
우리가 공부할 것은 커널!
- 운영체제의 핵심 부분으로 메모리에 상주하는 부분
운영체제의 목적
자원을 효율적으로 관리
- 자원은 한정적인데 그 자원으로 최대한의 성능을 내도록
- 어느 정도는 형평성 있게 자원을 배분해야 한다.
운영체제의 자원들
- 하드웨어 → 프로세서, 기억장치, 메모리
- SW → 프로세스, 파일, 메시지 등
- HW SW 자원들을 모두 운영체제가 관리
컴터를 편리하게 사용할 수 있도록 제공함.
운영체제의 분류
동시작업 가능 여부
단일 작업
- 한 번에 하나의 작업만 처리
- MS-DOS
- 엘리베이터
- 전화만 가능한 전화기
다중 작업
- 동시에 두 개 이상의 작업 처리
- 지금 우리가 쓰고 있는 현대 컴퓨터
사용자의 수
단일 사용자
다중 사용자
- 서버 컴퓨터에 사용 되는 OS(UNIX linux)
처리 방식
일괄 처리(batch processing)
- 작업 요청을 모아서 한꺼번에 처리
- 완전 옛날 방식
- 인터렉티브 하지 않음. → 입력시 바로 결과가 나오지 않음.
- 오늘 컴파일 하면 내일 오류를 알 수 있음.
시분할
- 현대 컴퓨터의 처리 방식
- 여러 작업을 수행 할 때 시간 단위로 분활 해서 처리
- 지금은 이것이 밀리초 단위이기 떄문에 우리가 느끼기에는 동시에 여러 작업을 하는 것처럼 느껴짐.
- 인터렉티브 함.
- 사람에 특화 된 시스템
실시간
- 정해진 시간 안에 반드시 결과 나오는 것을 보장해주는 방식
- 특수한 목적을 가진 시스템에서 사용
- 정확한 시간을 맞추어야 하는 것... 오차가 없어야 하는 것.
- 공장 제어, 미사일 제어, 반도체 장비
- Hard realtime system -> 반도체, 공장 등
- soft realtime system 데드라인은 있지만 조금 시간을 어겨도 괜찮은 것
- 요즘은 실시간 방식이 요구되고 있다.
우리가 실시간으로 영화를 보는 것이 실시간 방식은 아니다 시분할 방식이다!!
몇가지 용어
멀티테스킹
멀티프로그래밍
타임 쉐어링
멀티프로세서
- 프로세서는 cpu
- 하나의 컴터에서는 cpu가 여러개
운영체제의 예
유닉스
- 여러 사용자와 큰 기계를 위해서 만들어 졌음.(대형 컴퓨터, 서버)
- 어셈블리로 만들기 어려워서 c언어가 나옴. c언어로 작성된 운영체제
- 소스코드 공개
- 높은 이식성
- 커널을 아주 작게 만들어 놨음.
- 확장성이 높음
- 오픈소스 였음.
- 다양한 버전
MS
- 단일 사용자, 개인 사용자를 위함.
- 도스는 메모리가 640kb
- 하드웨어의 발전으로 망함.
- 윈도우가 나옴
운영체제의 구조
CPU
- 누구한테 cpu를 줄까 → cpu 스케줄링
- 여러 프로그램에게 cpu를 주었다 뺴았다.
- cpu는 선착순으로 처리 하지 않는다.
- 만약 화장실이 한개인데 한시간씩 하면...
- 은행원 한명인데 처음 사람이 한시간이 걸리면....
- 짧게 쓰는 것을 먼저 주는 것이 좋다.
- 그래서 주었다 빼었다 한다
메모리
- 한정된 메모리를 어떻게 쪼개어 쓰지?
- 중요한 것은 메모리에 주고 나머지는 디스크에 주고
- 과거를 통해서 메모리는 관리 하는 방법
디스크
- 디스크에 파일을 어떻게 보관하지?
- 파일 관리
- 해드를 움직이면서 처리
- 우체부나 택배 기사님들... 엘리베이터
입출력 관리
- 엄청 느림
- 인터럽트 사용해서 처리
- 입력이 들어오면 cpu에게 인터럽트를 걸어서 처리
프로세스 관리.. 그외...
내가 운영체제가 되었다고 가장하자
내가 왕이 되었다고 생각하고 나라를 어떻게 관리 할지 고민해보자!!!