운영체제
컴퓨터와 사용자간의 상호교신을 담당하는 시스템 소프트웨어(프로그램)
사용자와 하드웨어 사이에 존재한다
운영체제 역할
사용자 측면
프로그램 수행
입출력 연산
파일시스템 조작
오류 탐지
통신
시스템 측면
모니터링
보호
자원 할당
운영체제 주요 기능
프로세스 관리
적절한 CPU 자원 배정
프로세스의 생성과 제거
스케줄링
교착상태 방지
보조기억장치 관리
저장소 할당
남는 공간 관리
파일 관리
파일, 폴더(=디렉토리) 생성과 제거
보조기억장치에 있는 파일을 부를 수 있도록 매핑
장치 관리
메모리 관리
기억 공간의 할당과 회수
시스템 보호
세마포어
네트워킹
토큰 링 방식
명령어 해석
컴파일러
커널(운영체제의 가장 핵심 부분)
커널 ( Kernel )
운영체제의 핵심, 시스템 하드웨어와 User Application 연동을 위하여 보안, 자원관리, 추상화를 수행하는
운영체제 제공 서비스 프로그램
시스템 콜 ( System Call )
사용자에게 커널 레벨의 작업을 수행할 수 있도록 특권을 부여하는 인터페이스 / 함수
하드웨어쪽에 명령을 내리는 작업
소프트웨어 인터럽트 = 함수
프로세스 ( Process )
메모리에 로드되어 CPU에 의해 실행되고 있는 실행 프로그램
Register, Stack, Point(Entry Point, 진입점, 메인함수), 프로그램, 데이터 등의 집합체
Text Segment ( Code ) 영역
Data 영역
코드에서 선언한 전역변수 또는 static 변수 등이 저장된 공간
Stack 영역
함수 안에서 선언된 지역변수, 매개변수, 리턴값, 돌아올 주소 등이 저장된 공간
Heap 영역
글로벌 데이터 저장 (동적 할당)
프로그래머에게 할당된 공간
하나의 프로그램 안에는 여러개의 프로세스가 존재한다
프로세스의 상태 / 생명주기 ( LifeCycle )
프로세스 제어 블록 ( PCB : Process Control Block )
특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조
모든 프로세스는 고유 PCB를 보유한다
문맥 교환 ( Context Switching ) = PCB 교체 과정
Context Switching Overhead : 처리하는 시간보다 교체하는 시간이 더 오래 걸리는 문제
프로세스 스케줄링
스케줄링 큐
링크드 리스트로 구현
문맥 교환 ( Context Switching )
멀티 프로세스 환경에서 실행중인 프로세스 상태를 PCB에 보관하고 새로운 프로세스의 상태를 CPU에 적재하는 과정
비자발적 문맥교환
실행 -> 준비
처리시간이 다 되어 Time RunOut 인터럽트가 발생하고 Ready 상태로 돌아갈 때, 인터럽트 발생 시
자발적 문맥교환
실행 -> 대기
Sleep()함수, 프로세스 종료 등
IPC ( Inter Process Communication )
프로세스들끼리 다른 주소에서 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로
파이프라인
네트워크처럼 동작
메시지
메시지 교환
공유 메모리
하드디스크 이용
셋 다 인터럽트가 발생한다
스레드 ( Thread )
같은 메모리 영역을 가진다
PCB를 더 작게 쪼갠거 (Light Weight)
프로세스는 실행단위가 .exe 단위
스레드는 실행단위가 함수 단위
단일 스레드
각각의 스레드를 하나씩 실행시키는것
서로간의 제어가 안된다
교착상태 발생, 우선순위 역전현상 발생, 응답시간, 실행순서 예측 불가능
멀티스레드
여러 개의 스레드를 사용해 하나의 업무를 동시에 처리
IPC, PCB 발생 최소화
스레드 제어 블럭 ( TCB : Thread Control Block )
링크드 리스트 기반
프로세스 vs 스레드
프로세스
.exe파일 단위
순차적 실행
문맥교환으로 인한 부하
스레드
함수 단위
실행순서를 알 수 없다 (단일 스레드)
CPU 성능 향상
시스템 자원 활용 극대화
인터럽트
외부
하드웨어적인 것들
전원 이상, 기계착오, 외부신호(키보드 입력), 입출력(파일 읽어오기, usb)
내부
프로그램 검사 (트랩)
devide by 0, overflow, underflow
소프트웨어
사용자가 명령으로 의도적으로 인터럽트 발생
SVC (SuperVisor Call) 명령 - 관리자 명령 콜 (Sleep함수)
'> CS' 카테고리의 다른 글
[운영체제] 주기억장치 관리 개요 (0) | 2023.09.13 |
---|---|
[운영체제] 스케줄링, 프로세스 동기화 (0) | 2023.09.13 |
[컴퓨터구조] 보조기억 장치 RAID, NAS, DAS, 입출력 장치 (0) | 2023.08.28 |
[컴퓨터 구조] 캐시 메모리, 주기억장치 (0) | 2023.08.08 |
[컴퓨터 구조] 기억 장치 (0) | 2023.07.20 |