srin23.log
로그인
srin23.log
로그인
[혼공학습단 9기] 혼자 공부하는 컴퓨터 구조+운영체제 : 4주차
김세린
·
2023년 2월 5일
팔로우
0
혼공
혼공컴운
혼공학습단
0
[혼공학습단 9기] 혼공컴운
목록 보기
4/6
9. 운영체제 시작하기
09-1. 운영체제를 알아야 하는이유
운영체제는 01~08장까지 배운 컴퓨터 부품들을 관리하고, 여러분들이 개발한 프로그램이 올바르게 실행되도록 돕습니다.
운영체제란
시스템 자원 : 프로그램 실행에 마땅히 필요한 요소들(=자원)
CPU, 메모리, 보조기억장치, 입출력장치 등과 같은 컴퓨터 부품
모든 프로그램은 실행되기 위해 반드시 자원이 필요하다.
운영체제
실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행된다.
사용자 영역 : 커널영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역
운영체제를 알아야 하는 이유
운영체제가 없다면 아무리 간단한 프로그램이라도 하드웨어를 조작하는 코드를 개발자가 모두 직접 작성해야 한다.
운영체제와의 대화로 하드웨어와 프로그램을 더 깊이 이해하고 문제 해결의 실마리를 찾을 수 있다.
운영체제의 대화 : ex. 오류
09-2. 운영체제의 큰 그림
운영체제의 심장, 커널
커널
운영체에의 핵심 서비스를 담당하는 부분
핵심 서비스 : 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등
운영체제가 설치된 모든 기기에는 커널이 있다.
사용자 인터페이스 : 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스
윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로
그래픽 유저 인터페이스 : 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스
커맨드 라인 인터페이스 : 명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스
이중 모드와 시스템 호출
운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호합니다.
응용 프로그램들이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록하여 자원을 보호합니다.
이중모드
CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 형식
사용자 모드 : 운영체제 서비스를 제공받을 수 없는 실행 모드
커널 영역의 코드를 실행할 수 없는 모드
일반적인 응용 프로그램
커널 모드 : 운영체제 서비스를 제공받을 수 있는 실행 모드
커널 영역의 코드를 실행할 수 있는 모드
시스템 호출
운영체제 서비스를 제공받기 위한 요청
사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공
소프트웨어 인터럽트 : 인터럽트를 발생시키는 특정 명령어에 의해 발생
운영체제의 핵심 서비스
프로세스 관리
프로세스 : 실행중인 프로그램
일반적으로 하나의 CPU는 한번에 하나의 프로세스만 실행할 수 있기에 CPU는 이 프로세스들을 조금씩 번갈아 가며 실행
자원 접근 및 할당
운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당해 줍니다.
CPU
CPU 스케줄링
메모리
어느 주소에 프로세스를 적재할지 결정
입출력 장치
인터럽트 서비스 루팅 제공
파일 시스템 관리
가상 머신과 이중 모드의 발전
가상 머신
소프트웨어적으로 만들어낸 가상 컴퓨터
새로운 운영체제과 응용 프로그램을 설치하고 실행할 수 있다.
시스템 호출의 종류
시스템 호출
운영체제 서비스를 제공받기 ㅜ이한 방법
10. 프로세스와 스레드
10-1. 프로세스 개요
프로세스 직접 확인하기
[작업관리자-프로세스] 탭에서 확인 가능하다.
포그라운드 프로세스 : 사용자가 보는 앞에서 실행되는 프로세스
백그라운드 프로세스 : 사용자가 보지 못하는 뒤에서 실행되는 프로세스
데몬/서비스 : 사용자와 상호작용하지 않고 그저 묵묵히 정해진 일만 수행하는 백그라운드 프로세스
프로세스 제어 블록
모든 프로세스가 CPU를 동시에 사용할 수 없기 때문에 차례대로 돌아가며 한정된 시간만큼만 CPU를 사용한다.
프로세스 제어 블록(PCB)
프로세스와 관련된 정보를 저장하는 자료 구조
커널 영역에 생성
사용 이유
빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리
프로세스에 CPU를 비롯한 자원 배분
PCB 내 정보
프로세스 ID(PID)
특정 프로세스를 식별하기 위해 부여하는 고유한 번호
레지스터 값
프로세스 상태
CPU 스케줄링 정보
메모리 관리 정보
사용한 파일과 입출력 장치 목록
문맥 교환
문맥
하나의 프로세스 수행을 재개하기 위해 기억해야할 정보
하나의 프로세스 문맥은 해당 프로세스의 PCB에 표현
PCB에 기록되는 정보들
문맥 교환
기존 프로세스의 문맥을 PCB에 백업하고 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것
프로세스의 메모리 영역
사용자 영역 프로세스 배치
코드 영역(=텍스트 영역)
실행할 수 있는 코드, 기계어 명령어 저장
데이터 영역
프로그램이 실행되는 동안 유지할 데이터 저장
전역변수
정적할당영역
힙 영역
프로그래머가 직접 할당할 수 있는 저장 공간
동적 할당 영역
스택 영역
데이터를 일시적으로 저장하는 공간
동적 할당 영역
10-2. 프로세스 상태와 계층 구조
프로세스 상태
프로세스 상태
생성상태
프로세스를 생성중인 상태
준비상태
당장이라도 CPU를 할당 받아 사용할 수 있지만 자신의 차례를 기다리고 있는 상태
실행상태
CPU를 할당 받아 실행중인 상태
대기상태
실행도중 입출력 장치를 사용해 작업을 기다리는 상태
종료상태
프로세스가 종료된 상태
프로세스 계층 구조
부모 프로세스 : 새 프로세스를 생성한 프로세스
자식 프로세스 : 부모 프로세스에 의해 생성된 프로세스
프로세스 계층 구조
프로세스 생성 기법
부모 프로세스를 통해 생성된 자식 프로세스들은 복제와 옷갈아입기를 통해 실행된
fork : 부모 프로세스에서 복제하여 자식 프로세스 생성
exec : 자식 프로세스는 자신의 메모리 공간을 다른 프로그램으로 교체
10-3. 스레드
프로세스와 스레드
단일 스레드 프로세스
모든 프로세스가 하나의 실행 흐름을 가지고 한번에 하나의 부분만 실행되는 프로세스
스레드
하나의 프로세스가 한번에 여러 일을 동시에 처리할 수 있음
프로세스를 구성하는 여러 명령어를 동시에 실행
프로세스를 구성하는 실행 단위
멀티프로세스와 멀티스레드
멀티프로세스 : 여러 프로세스를 동시에 실행하는 것
멀티스레드 : 여러 스레드로 프로세스를 동시에 실행하는 것
11. CPU 스케줄링
11-1. CPU 스케줄링 개요
프로세스 우선순위
우선순위
우선순위가 높은 프로세스 : 빨리 처리해야하는 프로세스
모든 프로세스가 CPU를 차례대로 돌아가며 사용하는 것보다 각각의 상황에 맞게 CPU를 배분하는 것이 더 효율적이다.
상황에 맞게 그리고 프로세스의 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 하기 위해 우선순위를 부여
스케줄링 큐
스케줄링 큐
운영체제가 매번 일일이 모든 PCB를 검사하여 먼저 자원을 이용할 프로세스를 결정하는 것은 번거롭고 오랜시간이 걸림
프로세스들을 줄세워 운영체제는 스케줄링 큐로 구현하고 관리함
준비 큐 : CPU를 이요하고 싶은 프로세스들이 서는 줄
대기 큐 : 입출력 장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄
선점형과 비선점형 스케줄링
선점형 스케줄링
프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식
한 프로세스의 자원 독점을 막고, 프로세스들에 골고루 자원 배분 가능
문맥 교환 과정에서 오버헤드 발생 가능
비선점형 스케줄링
하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링 방식
오버헤드가 적음
프로세스가 골고루 자원을 사용할 수 없음
11-2. CPU 스케줄링 알고리즘
스케줄링 알고리즘 종류
선입 선처리 스케줄링(FCFS 스케줄링)
준비된 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식
호휘효과
프로세스들이 실행되기 위해 기다리는 시간이 많아지는 것
최단 작업 우선 스케줄링(SJF 스케줄링)
CPU사용시간이 가장 짧은 간단한 프로세스 먼저 실행하는 스케줄링 방식
비선점형이자 선점형
라운드 로빈 스케줄링
선입 선처리 스케줄리에 타임 슬라이스라는 개념이 더해진 스케줄링 방식
타임 슬라이스
각 프로세스가 CPU를 사용할 수 있는 정해진 시간
최소 잔여 시간 우선 스케줄링(SRT 스케줄링)
최단 작업 우선 스케줄링 알고리즘과 라운드 로빈 알고리즘을 합친 스케줄링 방식
우선순위 스케줄링
프로세스들에 우선순위를 부여하고 가장 높은 우선순위를 가진 프로세스부터 실행하는 스케줄링 방식
다단계 큐 스케줄링
우선순위 스케줄링의 발전된 형태
우선순위별로 준비 큐를 여러개 사용하는 스케줄링 방식
다단계 피드백 큐 스케줄링
다단계 큐 스케줄링의 발전된 형태
프로세스들이 큐 사이를 이동할 수 있는 다단계 큐 스케줄링
MISSION
p304. 확인문제 1번
생성 상태
준비 상태
실행 상태
종료 상태
대기 상태
김세린
성장하는 신입 개발자🌱
팔로우
이전 포스트
[혼공학습단 9기] 혼자 공부하는 컴퓨터 구조+운영체제 : 3주차
다음 포스트
[혼공학습단 9기] 혼자 공부하는 컴퓨터 구조+운영체제 : 5주차
0개의 댓글
댓글 작성