# 운영체제란
컴퓨터의 자원(하드웨어, 소프트웨어)을 효율적으로 활용하는 시스템 프로그램들의 집합(소프트 프로그램)
# 직접 메모리 접근
- 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 |