일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 비트 코인
- Dapp
- for문 사용해보기
- 1065
- 2448
- 블록 체인
- 세 수
- 솔리디티
- 가상 화폐
- 시험 성적
- 10871
- Mist
- 그대로 출력하기
- if문 사용해보기
- X보다 작은 수
- 1110
- 1546
- 평균은 넘겠지
- 1%d
- 별 찍기 - 11
- 자바스크립트
- 더하기 사이클
- 알고리즘 문제풀이
- Baekjoon
- 10817
- 함수 사용하기
- 이더리움
- 단계별로 풀어보기
- Remix
- 백준
- Today
- Total
블링블링 범블링
Tip. 운영체제 용어 정리 본문
1. 운영체제 용어 정리
컴퓨터 사용자 (편리성) <- OS(중개자, Intermediary) -> 컴퓨터 하드웨어
▶ 운영체제란 무엇인가?
① 하드웨어(Hardware) : 기본적인 계산용 자원의 준비 (CPU, 기억 장치, 입출력 장치)
② 응용프로그램(Application Program) : 사용자의 문제 풀이를 위한 자원의 이용 방법 규정(컴파일러, 데이터베이스 시스템, 게임, 사무용 프로그램)
③ 사용자(User) : 문제 풀이(사람, 기계, 다른 컴퓨터)
④ 운영체제(Operating System) : 여러 응용 프로그램간의 하드웨어 사용을 위한 제어 조정
▶ 운영체제의 정의
① 자원 할당자(Resource Allocator) : 사용자의 작업을 위한 프로그램이 필요로 하는 컴퓨터 시스템의 자원(H/W, S/W)을 할당하되, 충돌 시 공정하고 효율적으로 할당
② 제어 프로그램(Control Program) : 컴퓨터의 오류와 부적절한 사용의 방지를 위해, 다양한 입출력 장치와 사용자 프로그램을 제어
- 컴퓨터에서 항상 실행되는 프로그램으로 커널이라 불림
※ Bootstrap Program : 전원이 켜지거나 재부팅 될 때 실행할 초기 프로그램
-> ROM이나 EEPROM에 저장되어 있고 일반적으로 펌웨어라고 알려져있음
-> 커널을 메모리(기억 장치)에 적재, 첫 번째 프로세스 "init"을 수행시키고 사건이 일어나기를 기다리게 함
-> 이 때, CPU 레지스터, 기억장치, 장치 제어기 등을 포함한 시스템의 모든 상태를 초기화
▶ 컴퓨터 시스템 조직
- 하나 또는 그 이상의 CPU와, 장치 제어자들이 버스를 통해 연결되어 공유된 메모리에 접근한다.
- 메모리 사이클을 얻기 위해 경쟁하면서 병행 실행될 수 있다.
▶ 인터럽트(Interrupt)의 기능
- 모든 서비스 루틴들의 주소를 포함한 인터럽트 벡터를 통해 제어
- Trap : User request나 Error에 의한 Software generated interrupt
- 운영체제는 Interrupt driven이다. (장점 : CPU가 event(하드웨어의 interrupt)를 기다릴 필요가 없음)
▶ 인터럽트 종류
- Polling : 인터럽트 특정 처리기(interrupt-specific handler)를 호출, survey, examine, checking 같은 것(느림)
- Vectored interrupt system : 장치 번호로 색인하여 interrupt 서비스 루틴의 주소를 파악하고 interrupt 루틴을 호출, address를 보내는 방법(빠름, 대부분의 interrupt)
▶ 인터럽트에 의해 중단된 명령의 주소 저장 방식
① 고정 위치나 장치 번호에 따라 색인된 위치에 저장
② 시스템 스택에 반환 주소를 저장 <- 일반적으로 많이 사용됨 ( 이 때, 프로세서의 상태(레지스터들의 값)도 저장되어야 함)
▶ 여러 인터럽트의 처리 방식
① 하나의 인터럽트가 처리되고 있는 동안에 다른 인터럽트는 지연되는 방식
② 우선순위 정책에 의해, 보다 높은 우선순위의 인터럽트는 받아들여지지만 보다 낮은 우선순위의 인터럽트는 무시하는 방식
▶ 입출력 구조(I/O Structure)
- 장치 제어기(device controller) : 약간의 지역 버퍼 저장 장치와 특수 목적용 레지스터를 관리
-> 주변장치와 지역 버퍼간의 자료 전송을 담당
▶ 사용자 프로세스의 입출력 요청 방식 : 두 가지 입출력 방식
① 동기식 입출력 : 입출력이 시작되어 완료된 후에 제어가 사용자 프로세스로 반환되는 경우
- 장점 : 인터럽트를 걸고 있는 장치가 명확
- 단점 : 여러 장치에 의한 동시 입출력 불가, 입출려과 연산의 중복 불가
② 비동기식 입출력 : 입출력이 완료되기 이전에 사용자 프로그램으로 제어가 넘어가는 경우
- 장점 : 시스템의 효율성 증가
- 단점 : 동시에 많은 입출력 요청을 기억할 수 있어야 함
▶ 시스템 호출(System Calls) : 프로세스와 운영체제간의 인터페이스 제공
-> 일반적으로 프로세스에서 다수의 시스템 호출이 발생하는데, 컴파일러와 수행시간 지원 패키지에 의해 프로그래머로부터 숨겨짐
▶ 장치 상태 테이블(Device-state table) : 각 입출력 장치에 대한 항목과 해당 요청 리스트가 연결되어 있는 테이블
① 입출력 장치는 입출력의 종료시 인터럽트를 검
② 운영체제는 어느 장치에서 인터럽트가 발생했는지를 밝히고, 장치 상태 테이블을 수정
③ 추가적인 요청이 있으면, 그 요청을 처리함
▶ DMA(Direct Memory Access Structure) : 입출력 장치를 위한 버퍼(buffer), 포인터(pointer), 계수기(counter)를 설정한 후, DMA 장치 제어기는 전체 자료 블록을 중앙처리장치의 간섭 없이 직접 기억장치와 버퍼 저장장치 사이에 블록 단위로 전송하는 방식
ex) 만약 4ms마다 인터럽트가 발생하면 CPU가 각 인터럽트에 응답하기 위해 2ms가 필요하다고 가정할 때, 프로세스 실행을 위한 시간이 많이 남지 않는다. 작은 양의 data 전송시에는 괜찮지만 다량의 data 전송시에는 overhead가 너무 크다. 그렇기 때문에 DMA 사용.
- DMA controller : I/O device를 위해 Buffer, Pointer, Counter를 설정
- Device controller : 전체 데이터 블록을 CPU 간섭없이 직접 버퍼에서 메모리로 전달
▶ 저장장치 구조(Storage Structure)
- 주기억장치 : 고속, 소용량, 휘발성
- 보조기억장치 : 저속, 대용량, 비휘발성
▶ 주기억장치(Main Memory) : 중앙처리장치가 직접 접근할 수 있는 유일한 대량 저장장치 (ex. 레지스터)
-> 즉, 프로그램은 수행을 위해 반드시 주기억장치에 있어야 함
- 버스로 연결되어있어 여러사이클 소요
cf) 캐시 : 레지스터처럼 한 사이클로 접근되는 고속의 기억장치, 주기억장치와 중앙처리장치 사이에 위치함으로써, 두 장치의 속도차이를 극복할 수 있음
▶ 캐싱(Caching) : 저장장치 계층에서 상위 저장장치는 하위 저장장치의 캐시로 간주할 수 있음
- 특정한 정보가 필요한 경우 먼저 고속의 캐시에 있는지를 조사하여 있으면 직접 사용
- 그렇지 않으면 저속의 하위 장치에 있는 정보를 사용
- 만일 이 정보가 다시 사용될 확률이 높으면 캐시에 복사
-> 할당 정책과 교체 알고리즘의 구현이 필요
※ 일반적으로 캐시와 중앙처리장치(레지스터)간의 전송은 운영체제의 간섭 없이 하드웨어적으로 이루어지고, 디스크와 기억장치간의 자료 전송은 운영체제에 의해 이루어진다.
▶ 컴퓨터 시스템 구조
- Multiprocessor : Parallel systems, tightly-coupled systems
- 장점
① Increased throughput : 짧은 시간에 많은 일을 하기를 바람
② Economy of scale : 경제적 효과, ex) 하나의 디스크에 데이터를 저장하고 모든 처리기가 이를 공유
③ Increased reliability : ex) 10개가 있고 하나만 고장나면, 나머지가 나누어 실행 가능. 단지 10% 느려지는 효과
- Asymmetric Multiprocessing : 특정 리스트가 더 많이. 비대칭적
- Symmetric Multiprocessing : 대칭적 다중처리구조, 모든 처리기가 대등. 각 처리기는 자신 고유의 레지스터 집합과 지역적인 캐시를가짐
▶ 이중 모드 연산(Dual-Mode Operation)
- UMA : 일정한 메모리 접근, 모든 CPU가 RAM을 접근하는데 걸리는 시간이 같은 경우로 정의
- NUMA : 차등 메모리 접근, 메모리 일부분에 접근하는데 걸리는 시간보다 길어짐. 성능에 불이익
- 블레이드 서버(Blade Server) : 다수의 처리기 보드 및 입출력 보드, 네트워킹 보드들이 하나의 섀시(Chassis)안에 장착
- 하나의 칩에 여러 코어 > 하나의 코어를 가진 복수 칩 (적은 전력소모)
▶ 클러스터 시스템(Clustered Systems) : 둘 이상의 독자적 시스템 또는 노드를 결합하여 구성
- SAN(Storage-area network) : 여러 호스트를 여러 장치에 붙일 수 있게함
- 하나가 고장나도 서비스는 계속 제공된다.
- Asymmetric Clustering : 한 컴퓨터는 긴급 대기 모드 유지
- Symmetric Clustering : 가용한 하드웨어 모두 사용(더 효율적)
- HPC(High-performance Computing) : 고성능 계산(여러 개의 컴퓨터 시스템으로 구성되기 때문에)
- DLM(Distributed Lock Manager) : 분산잠금관리자(접근 제어와 잠금 기법)
▶ 다중프로그램(Multiprogramming) : CPU 이용률 증가
- 단일 프로그램을 바쁘게 유지 x
- CPU가 항상 하나의 작업을 할 수 있게
- 한번에 여러 작업을 메모리에 적재 (Job Scheduling)을 통해
▶ 시분할(Timesharing, Multitasking) : 사용자와 시스템간에 직접적인 통신을 제공
- 1sec 이하의 즉각적인 응답
- Swapping : 적절한 응답시간 제공
- Virtual memory : 프로그램이 물리 메모리의 크기보다 더 커도 됨
▶ 운영체제 연산
- 인터럽트 구동식
- 소프트웨어 에러나 요구는 트랩(trap)이나 예외를 발생 (0으로 나누는 것, 운영체제 서비스의 요구, 무한루프 등)
- Dual-mode : User mode(mode bit 1)와 Kernel mode(mode bit 0, 슈퍼바이저, 시스템, 특권) 가 있음
- mode bit는 하드웨어가 제공 - 운영체제 코드 실행과 사용자 정의 코드의 실행을 구분
- 시스템 호출(System Call)을 통해 사용자모드 <-> 커널 모드 변경이 가능
▶ 타이머(Timer) : 무한루프 / 시스템 서비스를 호출하지 않아서 운영체제로 복귀하지 않는 경우 방지
- 고정 클럭 + Counter(계수기)
- 지정된 시간 이후 인터럽트하도록 설정
- Counter 값을 설정
- Counter가 0이 될 때 인터럽트
- 운영체제는 인터럽트를 치명적인 오류로 취급하더나 또는 프로그램에게 더 많은 시간을 줄 수 있다.
▶ 프로세스 관리
- 프로그램 : 수동적 개체(Passive entity, 디스크에 저장된 파일 등)
- 프로세스 : 능동적 개체(Active entity, Program Counter 등)
- 사용자 프로세스와 시스템 프로세스의 생성과 제거
- 프로세스의 일시 중지와 재실행
- 프로세스 동기화를 위한 기법 제공
- 프로세스 통신을 위한 기법 제공
▶ 메모리 관리
- 크기가 수십만에서 수십억까지의 범위를 가지는 워드나 바이트의 대용량 배열
- 명령어 인출주기(instruction fetch-cycle)동안 주 메모리로부터 명령어를 읽고, 자료 인출 주기(data fetch-cycle)동안 주 메모리로부터 데이터를 읽고 쓴다.
- 메모리의 현재 어느 부분이 사용되고 있으며, 누구에 의해 사용되고 있는지를 추적해야 한다.
- 어떤 프로세스(또는 그 일부)들을 메모리에 적재하고 제거할 것인가를 결정해야 한다.
- 필요에 따라 메모리 공간을 할당하고 회수해야 한다.
▶ 저장공간 관리
- 운영체제는 자기테이프, 자기디스크, 광디스크 등 여러타입의 물리적 매체에 정보를 저장할 수 있음
- 접근 속도, 용량, 데이터 전송률, 접근방식(순차 접근 방식 또는 임의 접근 방식)
- 파일의 생성 및 제거
- 디렉터리 생성 및 제거
- 파일과 디렉터리를 조작하기 위한 프리미티브의 제공
- 파일을 보조 저장장치로 맵핑
- 안정적인(비휘발성) 저장매체에 파일을 백업
▶ 대용량 저장장치 관리 (디스크 관리)
- 자유 공간(free-space) 관리
- 저장 장소 할당
- 디스크 스케쥴링
▶ 입출력 시스템(I/O-System)
- 버퍼링, 캐싱, 스풀링을 포함한 메모리 관리 구성요소
- 일반적인 장치 드라이버 인터페이스
- 특정 하드웨어 장치들을 위한 드라이버
▶ 보호와 보안(Protection and Security)
- 보호 : 컴퓨터 시스템이 정의한 자원에 대해 프로그램, 프로세스, 또는 사용자들의 접근을 제어하는 방법
- 보안 : 외부 또는 내부의 공격을 방어하는 것
출처 : https://m.blog.naver.com/
※ 앞으로 모든 OS 강좌의 게시글은 [ITstory] - http://copycode.tistory.com 의 글을 인용과 함께, 제가 생각하는 OS에 관한 주관적인 생각, OS 스터디의 과정에서 요약 노트를 만든 것을 보고 작성한 것임을 미리 알려드립니다.
'Technology > 오퍼레이팅 시스템' 카테고리의 다른 글
[OS 5장] 프로세스 관리 - 스케줄링 (1) | 2018.04.17 |
---|---|
[OS 4장] 프로세스 관리 - 개요 (0) | 2018.04.17 |
[OS 3장] 이중 모드 및 하드웨어 보호 (0) | 2018.04.17 |
[OS 2장] 운영체제 종류와 역할 (0) | 2018.04.17 |
[OS 1장] 컴퓨터 시스템의 소개 (0) | 2018.04.17 |