반응형
- File 파일 : 입출력 장치의 추상화
- 가상 메모리 : Virtual-memory : 메인 메모리와 디스크 입출력 장치의 추상화
- 프로세스 : 프로세서, 메인메모리, 입출력장치 모두의 추상화 --> 실행 中 프로그램에 대한 추상화 --> Concurrent Execution(병행 실행) 하고있는 것 처럼 보임.
*실제 운영체제는 Context-switch(문맥 교환) 방식으로 여러 프로세스 교차 실행
┖> 프로세스가 실행하는데 필요한 모든 status 정보 - 쓰레드 : 한 process 內 동작하는 여러 실행의 흐름
--> 각 쓰레드는 해당 프로세스의 컨텍스트에서 실행되며, 동일한 코드, 전역 Data 공유 - 가상주소공간
- 프로그램 코드 , 데이터 : 실행가능 목적파일로 초기화되는 코드 & 데이터 영역
- 힙(heap) : 실행시, 동적할당되는 고정 크기 영역
- 공유 라이브러리 : 공유 라이브러리(ex C표준, Math) 코드, 데이터 저장
- 스택(stack) : 함수 호출 및 리턴시 사용되는 지역변수, 리턴 값을 저장하는 곳
- 커널 라이브러리 : 운영체제의 커널이 저장되는 곳
- 컨트롤러(Controller) : 디바이스 자체가 칩셋, 시스템의 마더보드(또는 메인보드)에 장착
- 어뎁터(Adapter) : 마더보드의 슬롯에 저장되는 카드.
- 운영체제
:Computer H/W 관리하는 프로그램. 사용자와 H/W사이 중재자 역할.- 목표
- 사용자 프로그램 실행
- 컴퓨터 시스템을 사용자가 쉽고 편리하게 사용하여 문제 해결
- 컴퓨터 하드웨어의 효율적 관리
- 목표
- 컴퓨터 시스템 4大 구성요소
#하드웨어 : 기본 계산 자원 제공 (Computing resources)
CPU, MEMORY, I/O Devices
#운영체제 : 하드웨어 사용 제어 & 중재
#응용 프로그램 : User의 계산 문제 해결을 위해
System resources들이 어떻게 사용될 것인지 정리.
#사용자 : 사람, 기계, 다른 컴퓨터 등
User1 User2
| |
compiler text editer
| |
운 영 체 제
|
computer systems - 운영체제 정의
- 운영체제는 자원할당기(Resource allocater)
-모든 자원들을 관리하고 스케줄(Schedule) - 제어 프로그램
-프로그램 실행을 제어 - 커널
-Always 메모리에 상주 - Bootstrap program
-전원 켜지면 실행되는 초기 프로그램
-펌웨어 라고도 함.
-시스템의 모든 사항을 초기화.
-운영체제의 커널을 찾아 메모리에 적재 후 실행.
- 운영체제는 자원할당기(Resource allocater)
- 컴퓨터 시스템 연산
- I/O Devices와 CPU는 병행실행(Concurrent Execution)
#입출력 장치 제어기(IO Device Controller)
-Local buffer를 가짐.
-IO는 장체와 지역 버퍼 사이 수행.
-연산 종료시 인터럽트(Interrupt)사용.
- I/O Devices와 CPU는 병행실행(Concurrent Execution)
- Interrupt
- CPU에 인터럽트 신호가 들어오면 실행.
- 작업을 멈추고 고정된 위치에 Interrupt Service Routine 실행.
-trap 또는 Exception은 S/W가 생성한 인터럽트.
- 인터럽트 핸들링.
- 운영체제는 레지스터, 프로그램 카운터 저장.
-실행中 시스템 상태 보존.
*H/W가 제공하는 Interrupt : 벡터 인터럽트 시스템
*polling : 벡터는 누가 인터럽했는지 알 고 있으나
CPU는 모르기에 누가 인터럽트 했는지 일일히 물어봄. <S/W 인터럽트>
- 운영체제는 레지스터, 프로그램 카운터 저장.
- I/O Structure : 입출력구조
- System Call
- 사용자가 입출력 종료시까지 기다리도록 운영체제에 요청. - Device-status-table
- 각 IO Devices의 상태 저장.
*IO명령을 실행하면, 입출력 종료시에만 프로그램 제어 이동.
- System Call
- Storage Structure : 저장장치구조
- Main Memory : 주로 DRAM으로 구성. 임의 접근(Random access), 일반적으로 휘발성
- Secondary Device : 大용량, 비휘발성.
-자기 디스크 -> track 와 sector 로 분할.
-> Disk Controller는 장치와 computer 간의 논리상호작용
-Solid State Disk -> 빠름, 비휘발성.
- Secondary Device : 大용량, 비휘발성.
- Main Memory : 주로 DRAM으로 구성. 임의 접근(Random access), 일반적으로 휘발성
- 저장장치계층 : Hierarchy
- 계층으로 구성
- 캐싱(Caching)
- 더 빠른 저장장치로 정보를 복사.
- 주 메모리는 보조 저장 장치로 캐싱.
- 운영체제는 각 장치 제어기마다 장치 드라이버 내장.
- 캐싱
- 더 느린 저장장치(원본)에서 사용中 정보의 부분을 더 빠른 저장장치로 복사.
- 사용 中 정보가 더 빠른 저장장치(캐시)에 있는지 조사.
- 캐시의 크기는 원본의 저장장치보다 더 작음. 캐시관리가 중요함.
- Direct Memory Access 직접 메모리 접근
- 고속 전송이 가능한 IO 장치에 사용.
- CPU의 개입 없이 메모리로부터 자신의 버퍼 장치 or 버퍼 or 메모리로부터 데이터블록 전송.
- 블록 전송 완료시마다 인터럽트 발생.
- 단일 - 다중
- Single-Processor System
-CPU 단 한개
-디스크 제어기 등 특정 장치 처리기. - Multi-Processor System
-다중 처리기 시스템 -> 병렬 시스템, 멀티 코어 시스템
-증가된 처리량(throughput)
-규모의 경제 -> 저렴쓰
-증가된 신뢰성.- symmetric multiprocessing ( 대칭적 다중처리) --> cpu0 cpu1 cpu2
레지 레지 레지
캐시 캐시 캐시
메 모 리 - asymmtric multiprocessing (비대칭 다중처리)
- symmetric multiprocessing ( 대칭적 다중처리) --> cpu0 cpu1 cpu2
- Single-Processor System
- 클러스터형 시스템 (Clustrered System)
- 둘 이상의 독자적 시스템들을 연결해 협력 동작.
- Storage-area Network 사용해 저장장치 공유.
- 일부 노드 고장에도 작동하는 고가용성(High-Availbility)
- 비대칭 클러스터링 - 한 머신 working 中 다른 머신 대기.
- 대칭 클러스터링 - 여러 노드들이 응용수행 후 서로 모니터.
- 고성능 컴퓨팅을 위해 병렬로도 사용.
- 공유 Data에 대한 충돌되는 연산을 피함.
- 동기화가 필요한 클러스터에선 분산 잠금 관리자(DLM) 사용.
*최근에는 빅데이터 저장 및 처리를 위해서 구성.- 분산 파일 시스템 구성
- HDFS(Hadoop Distributed File System)
- MapReduce 병렬 처리
- 다중 프로그래밍
- CPU가 수행할 작업을 항상 하나는 갖도록 작업(JOB, PROCESS) 구성.
- 운영체제는 한번에 여러 작업을 메모리에 적재.
=> 동시에 실행하는 것처럼 보임.
CONCURRENT 실행. 병렬X
- 시분할 TIME-SHARING
- 다중 프로그래밍의 논리적 확장.
- 사용자는 각각 자기 프로그램과 상호작용.
- 응답시간(RESPONSE TIME)이 짧아야 하며 통상 1초.
-> 운영체제가 스케줄링 해줘야함.
┖ 기다리고 있는 job 中 (현재 CPU 사용 안하고 있는 애들)
어떤 프로그램을 실행할 것인지 결정. - 각 사용자는 메모리에 최소 하나의 프로그램을 가짐
┖ 프로세스 - 프로세스가 모두 메모리에 놓일 수 없는 경우.
- 메모리 -> DISK, DISK-> 메모리로.
- --> 스와핑 SWAPPING
- 운영체제는 인터럽트-구동식.
- 운영체제연산 - 이중연산모드
- 운영체제 코드의 실행과 사용자 정의 코드의 실행을 구분.
->운영체제 보호.
->사용자 USER모드, 커널 SUPERVISIOR모드, 시스템모드, 특권모드. - 하드웨어가 모드 비트 제공.
->커널모드 0, 사용자 모드 1
->일부 명령을 특권 모드로 지정하여 커널 모드에서만 실행되도록. - CPU의 다중 모드 지원이 증가 추세.
ex)가상 머신 별도 지원 모드비트 - TIMER INTERRUPT
-무한루프를 돌거나 자원 독점을 하는 경우 인터럽트가 발생.
-운영체제가 카운터의 초기값 세팅. 특권 명령
- 운영체제 코드의 실행과 사용자 정의 코드의 실행을 구분.
- 프로세스 관리
- 프로세스 : 실행 中 프로그램.
-프로그램은 수동적 객체, 프로세스는 능동적 객체.-한 프로세스 內 여러개의 프로세스(스레드) 존재 가능. - 다중 쓰레드 프로세스는 여러개의 프로그램 카운터를 가짐.
-단일 CPU에서 멀티플랙싱(병행(concrruent)실행).
-여러 CPU에서 병렬(PARREL)실행.
- 프로세스 : 실행 中 프로그램.
- 운영체제가 하는 일
- CPU의 프로세스와 쓰레드 스케줄.
- 프로세스 일시정지와 재수행
- 프로세스 동기화를 위한 기법 제공.
- 프로세스 통신 기법 제공.
- 교착상태 처리 기법 제공.
- MAIN MEMORY
- CPU와 입출력 장치에 의해 빠른 접근이 가능한 DATA의 저장소.
- 메모리 內 프로그램이 상주 ->폰 노이만 컴퓨터의 특징.
- I/O subsystem
- buffering : 전송 中 Data 임시 저장.
- Caching : Data의 일부를 고속 저장장치에 저장.
- Spooling : 한 작업의 출력을 다른 작업의 영역과 중첩.
- 보호 : 프로그램, 프로세스, 사용자 접근 제어
- 보안 : 외부 접근 제어
* 배열 : 연속적으로 저장된 메모리
┖ 중간에 삽입 삭제가 일어났을 때, 그 아래를 전부 수정해야 함.
ex) 연결 리스트는 커널 알고리즘, 배열, 큐에 사용. - 이진 검색 트리 binary serch tree
- balanced 트리는 log n만큼 걸림.
ex)1024인경우, 최악의 경우 1024만큼 걸리지만, balanced 인 경우 길어도 10단계임.
- balanced 트리는 log n만큼 걸림.
- 클라이언트 : 서비스요청.
- System call 매개변수 전달.
- 1. 레지스터 內 넣어서 전달.
- 2. 메모리 內 블록이나 Table에 넣어서 블록의 주소가 레지스터 內 매개변수.
- 3. 스택에 push 해서 전달.
- 모노리식 구조 Monolitc Structure
- 특정한 구조 없이 커널의 모든 기능을 단일 주소 공간에서 실행되는 단일 정책 이진 파일
- System Boot
- 부팅 : 커널에 적재해 시동하는 절차.
- 부트스트랩 프로그램 : Bootstrap loader 라고도 하며 Rom에 커널을 찾고 메모리에 적재, 수행 시작.
- Process
- Text section : 프로그램 코드
- Program counter : 레지스터
- Stack : 함수 매개변수, 복귀주소, 지역변수
- Data section : 전역 변수
- heap : 동적 할당 메모리
- 프로세스 상태
- new -> ready -> running -> waiting -> terminated
┖ 입출력 완료를 기다림.
- new -> ready -> running -> waiting -> terminated
- 프로세스 제어 블록 ( Process Control Block )
- 특정 프로세스의 여러 정보 수록
프로세스 상태, 번호, Program Counter, 레지스터, 스케줄링 정보, 메모리 관리 정보, 회계 정보
- 특정 프로세스의 여러 정보 수록
- 스케줄러 (scheduler)
- 단기(CPU)스케줄러 : 메모리에 있는 준비 큐 中 하나에 cpu 할당
- 장기(작업)스케줄러 : 디스크 상에 있는 프로세스를 준비 큐로 저장
*중기 스케줄러 : 프로세스를 디스크에서 메모리로 불러와 중단 지점부터 실행 재개
┖ swapping
- 문맥 교환 ( context switch )
- 현재 프로세스의 상태를 보관하고, 새 프로세스의 상태를 복구하는 작업
- 문맥 : pcb에 저장된 상태
- 프로세스 생성
- fork -> system call 을 통해 부모 프로세스가 자식 프로세스 생성.
- 부모 자식간 자원 공유 안됨.
- 주소 공간 (address space)
- 부모 프로세스의 복사본을 가짐.
- 부모 프로세스는 wait() system call 을 사용해 자식 프로세스의 종료를 기다림.
- wait() 시스템 콜은 물론 상태정보와 종료된 프로세스의 pid 리턴.
pid = wait(&status) - 부모 프로세스가 wait() 안했는데 종료되면 자식프로세스는 좀비.
- 부모가 wait 없이 종료하면 자식은 고아.
- wait() 시스템 콜은 물론 상태정보와 종료된 프로세스의 pid 리턴.
- #IPC(Interprocess Communication)
- 정보공유
- 계산 가속화 --> 병렬 실행
- 모듈성
- 공유 메모리 : 운영체제가 아닌 사용자 프로세스 제어 하 통신
- 메세지 전달.
- 베포 구독 모델
- 메모리가 토픽으로, 카톡이나 IoT
- POSIX : 시스템 몫의 호환성
System Call 의 함수 이름(시그니처)가 다르면 호환 X- IP주소 -> 컴터까지의 주소.
- 포트번호 -> 프로세스 구별
- udp : 편지
- tcp : 전화
- #파이프
- 단방향 -> 반이중
- 양방향 -> 전이중
- ORDINARY PIPE
- 생성한 프로세스이외에는 접근불가.
- 주소가 생성, 자식과 통신'
- NAMED PIPE
- 부모자식없이 프로세스간 접근 가능.
- 다중 쓰레드 프로세스
- CODE DATA FILES : 코드, 글로벌 데이터, 입출력 공유
- 레지 레지 레지
- 스택 스택 스택 -> 스택 포인터 포함.
- = 서 로 독 립 =
- 다중 쓰레드 장점
- 응답성 증가
- 자원 공유
- 경제성
- 규모 적용성
- fork -> system call 을 통해 부모 프로세스가 자식 프로세스 생성.
반응형
'_스타디' 카테고리의 다른 글
정보처리기사 이번엔 붙자. -1 (0) | 2022.08.26 |
---|---|
[conda] Solving environment : failed with initial frozen solve. Retrying with flexible solve : \ 하고 멈춰버릴때! (0) | 2022.06.06 |
[AVR] 세븐세그먼트 이용 카운터 타이머 만들기 | 마이크로프로세서 중간고사 (0) | 2021.10.19 |
SC error 315 / 스타 에러 오류 315 (0) | 2021.08.07 |
SAMSUNGSDS 랜선멘토링20210629 정리 (0) | 2021.06.29 |