728x90

# 운영체제란
컴퓨터의 자원(하드웨어, 소프트웨어)을 효율적으로 활용하는 시스템 프로그램들의 집합(소프트 프로그램)

# 직접 메모리 접근
- programmed I/O
- Interrupt-driven I/O
- DMA

# 프로그램된 I/O (Programmed I/O)

- cpu가 아닌 입출력모듈이 실행
- 인터럽트가 없음

- 처리기는 연산이 완료될 때까지 I/O 모듈의 상태를 주기적으로 검사 => 비효율적
- 실질적으로 쓰이지않음(옛날에 씀)
cpu1, io에는 백만시간 

# Interrupt-driven I/O
- 프로세서가 모듈에게 I/O 명령을 보낸 후 자신은 다른 일을 함

# DMA(교재 p33) => 효율적
- cpu 개입없이 블록 단위로 대량의 전송 가능하여 시스템 전반 속도 향상
- cpu가 결과를 받아 실행

- 시스템 버스상에 있는 별도의 모듈 에의해 수행되거나, 입출력모듈에 포함됨


# 멀티프로세서와 멀티코어 구조(교재 p34)
- 오늘날 : 병렬적으로 수행(동시성), 대칭형 멀티프로세서(SMPs), 멀티코어, 클러스터
- 전통적 : 순차적인 기계, cpu가 차례차레 실행
- cpu 하나는 한가지 일, 여러개면 여러개 일함

- cpu 1초, I/O 1만초 => 읽어올동안 cpu 다른 일 하는 게 효율적
- 스마트폰, pc에서 여러 개 창 띄어놈 => 병렬적

# 대칭적 다중처리
- 명령어와 데이터 관점에서 어떻게 처리할거냐
- Single Instruction Multiple Data (SIMD) stream : 하나의 명령이 서로 다른 데이터 집합에 대하여 서로 다른 cpu에 의해 수행(a, b, c, d 덧셈 한 번에 수행 => 빠름) (ppt chp1 p46)

# 대칭적 다중처리 정의(교재 p35. 그림 1.19)
* 대칭적 : 왼쪽, 오른쪽 균형이 맞음(반대어 : 종속적)

- 여러 개를 동시에 처리 
- 서로에 종속되지않고 독립적으로 일함

- 두 개 이상의 유사한 수행 능력을 갖는 프로세스 들로 구성

- 버스나 주기억장치와 I/O 장치를 공유


- L(Level) : cpu 가까운게 L1

- 처리기와 캐시가 버스를 통해 연결

- 각각의 여러 가지 일을 동시에 할 수 있음

 

< 대칭적 다중처리 장점 >
- 성능 : 여러 개 동시에 도니까 여러 일을 할 수 있음
- 가용성 : 하나의 cpu가 고장나도 시스템은 성능이 다소 떨어지지만 돌아갈 수 있음
- 점직적 향상 : 성능 향상을 위해 cpu 추가 가능
- 크기 조정(scaling) : 스케일링 할 수 있음(크기 조정), 벤더들은 다양한 제품 공급 가능
* 벤더 : 하드웨어 물건 파는 사람 ex) 삼성전자
* cpu == 처리기 == 프로세서


# 멀티코어 컴퓨터
- 칩 멀티프로세서

- 코어가 여러 개
- 하나의 다이(die, 판)에 2개 이상의 코어(프로세서)나 놓여있음
- 각 코어는 독립된 프로세서의 모든 구성요소(레지스터, ALU, pipeline HW, control unit, L1 명령어, 캐시) 포함
* ALU(산술적인 연산장치)

- 프로세서를 캐시에 가까이 위치
- 캐시 선반입(prefetching) 기법 사용(미리 가져다 놓음, 성능 향상)
- 듀얼코어 (2개) : 하나의 cpu에 두개의 코어 달림
- quad core (4개)

# 운영체제란 ? (+chp2)
- 응용 프로그램의 실행을 제어하는 프로그램
- 응용 프로그램과 하드웨어 간의 인터페이스
- 사용자와 컴퓨터의 인터페이스

- 자원 관리자
- 시스템 자원(하드웨어, 소프트웨어 등)
- 에러 발견 및 응답
- 어카운팅 : 성능이 좋아지고 나빠지고있는지, 개인 컴퓨터(PC)에서는 약함, 대형시스템에서는 중요
- 인스트럭션 셋 구조 (ISA) : 컴퓨터가 따르고 있는 기계명령어 집합
- 응용 프로그래밍 인터페이스 (API) : 서로 다른 플랫폼(OS)간 호환성 지원

- 응용 실행파일 인터페이스 (ABI) : 이기종간 호환성 지원

- 하드웨어가 업그레이드 되므로 운영체제도 업그레이드 됨

- 새로운 서비스의 도입, 버그 수정 => 지속적으로 발전

 

# 자원관리자로서의 운영체제

- 일반적인 컴퓨터 소프트웨어와 동일하게 기능

- 자원 관리

- 운영체제 프로그램에서 제어해서 프로그램을 쓸 수 있게 해줌

 

# 커널(kernel, nucleus)

- 주 기억장치에 상주하는 운영체제에서 가장 많이 사용되는 기능들을 포함 (핵심적인 기능)

- 마이크로커널(I/O access. scehduler, MMU)

 

# 멀티 프로그래밍

- 멀티 태스킹

- cpu 번갈아 사용해서 작업 수행

- 병렬 처리와는 다름, cpu 1개가 여러 프로그램을 동시에 실행

- I/O 작업

- 메모리 관리 

- cpu 스케줄링 : cpu를 할당해줌, 실제 작업이 돌았다는 얘기, 준비 상태에 있는 작업 중에 하나가 선택되어 수행한다는 얘기

- 초기에는 대화가 안되는 게 단점 (지금은 아님)

- 한 작업이 입출력을 대기해야 할 때 처리기는 다른 작업으로 제어를 넘김

* job == task == 일

 

# 이용률 히스토그램
- 교재 p62 그림2.6

- 그래프로 그린 것

* 터미널 : 모니터, 디스플레이, 사용자가 마지막으로 보는 것

 

# 시분할 (time sharing) 시스템

- cpu가 쓰는 시간을 분할 (여러 사용자 프로그램이 나눠서 씀) => 효율적

- 사용자는 자기가 혼자 쓰는 걸로 착각함

- 사용자가 선점 (preempted)

* 클럭 : 하나씩 단계

* 모니터 : 초창기때 운영체제, 화면 모니터 아님

 

- 일괄 처리 : 한꺼번에 모와서 처리, 마지막에만 결과 봄, 병렬처리와 반대는 아니다 ?

- 병렬처리의 반대는 순차 처리

- 일괄처리 반대말은 ? 대화형 처리(클릭해서 결과 보고 클릭해서 결과 봄)

# 운영체제 주요 성과

- 프로세스

- 메모리 관리

- 정보 보호 및 보안

- 스케줄링 및 자원 관리

- 시스템 구조

 

# 프로세스

- 실행 중인 프로그램

- cpu에서 수행되고 할당되는 어느 객체

- 컴퓨터상에서 수행되고 있는 프로그램의 일부분

- 차례차례 수행되는 쓰레드

- test.c 를 실행시킬때는 프로세스 (메인메모리에 로드 되어있어야함)

- 하드디스크에 저장된 것은 프로그램

- 프로세스 구성요소 : 프로그램 코드, 데이터, 프로그램 수행 문맥(실행 중인 프로세스의 모든 상태 저장)

 

# 프로세스 관리

- 일괄처리 동작

- 시분할 시스템

- 실시간 시스템

 

- cpu 하나이면 하나의 윈도우(프로세스)만 씀

 

# 운영체제 오류의 주요 원인

- 부적절한 동기화

- 상호배제 실패 : 한 사용자만 가능

- 비결정적 프로그램 실행 : 어떤게 먼저 수행될지 모르겠다, 에러

- 교착상태 : 상대방의 실행을 기다리면서 무한 대기에 빠질 수 있음

- 타이민과 동기화 해결

 

# 메모리 관리

- 프로세스 분리 : 서로 영역을 침범 하지 못하도록 함

- 자동 할당 및 관리

- 보호 및 접근 제어

- 장기 저장 : 꺼진 후에도 저장

* 가상 메모리 : 진짜가 아님, 마치 진짜처럼 씀, page# + offset(얼마만큼 떨어져있나), 여러 개의 사용자 프로그램들이 동시에 주 메모리에 올라올 수 있게 함

 

# 페이징

- 고정-크기 블록 단위로 잘라 관리

- 가상 주소를 통해 원하는 워드에 접근

- 실제 주소 변환은 운영체제가 함

- 프로그램이 사용하는 가상주소와 주기억장치의 실제 주소간 동적 매핑 제공

- 메인 메모리에 로드되어있어야함

* 페이지(가상메모리상) == 프레임(실제메모리상)

 

# 메모리 관리 유닛 (MMU)

- 주소 변환 하드웨어

 

# 스와핑 : 교체 교환

- 주기억장치로 데이터 읽어옴 : swap in

- 주기억장에서 데이터 빠져나가감 : swap out 

# 보호 및 접근 제어

- 가용성

- 기밀성

- 데이터 무결성

- 신빙성

 

# 스케줄링 및 자원 관리

- 어떻게 자원을 쓰게 할 것인가

- 공정성 : 특정 자원을 사용하고자 하는 프로세서들이 공정하게 쓰도록

- 효율성 : 운영체제는 처리량을 극대화, 반응시간 최소화, 시분할은 많은 사용자들이 쓸 수 있게 해야함, 우선순위 둠

- 디스패처 : round-robin(공평하게 차례차례로 교대로 돌아감) 방식으로 큐에 있는 프로세스에게 정해진 시간 할당, 작업을 꺼내서 실제로 cpu가 수행되게 해주는 것, 프로그램 기능 모듈

* 큐 : 데이터 구조의 일부(FIFO, FCFS)

 

 

반응형

'전공 공부 > 운영체제' 카테고리의 다른 글

운영체제 9주차 강의  (0) 2021.04.27
운영체제 7주차 강의  (0) 2021.04.13
운영체제 5주차 강의  (0) 2021.04.04
운영체제 4주차 강의  (0) 2021.04.03
운영체제 2주차 강의  (0) 2021.03.09
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기