CS공부 24

교착 상태(데드락)

교착 상태 일어나지 않을 사건을 기다리며 진행이 멈춰버리는 현상 해결 방법 자원 할당 그래프 - 교착 상태 발생 조건 파악 프로세스는 원으로, 자원의 종류는 사각형으로 표현 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현 프로세스가 어떤 자원을 할당 받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시 교착 상태가 일어난 그래프의 특징 - 원의 형태를 띄고 있다 교착상태가 일어나는 근본적인 이유를 알아보기 아래 네 가지 조건 모두 만족해야만 교착 상태 발생 상호 배제 - 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태 점유와 대기 - 자원을 할당 받은 상태에서 다른 자원 할당을 기다리는 상태 ..

CS지식 쌓기 2024.01.02

동기화 기법

뮤텍스 락 상호 배제를 위한 동기화 도구(자물쇠 역할), 뮤텍스 락 공유 자원이 하나만 있을 경우 전여 변수 하나, 함수 두 개 자물쇠 역할 ; 프로세스들이 공유하는 전역 변수 lock 임계 구역을 잠그는 역할 : acquire 함수 임계 구역의 잠금을 해제하는 역할 : release 함수 acquire 함수 프로세스가 임계 구역에 진입하기 전에 호출 임계 구역이 잠겨있다면, 임계 구역이 열릴 때까지 임계 구역을 반복적으로 확인 ( lock이 false가 될때까지) 임계 구역이 열려있다면, 임계 구역 잠그기(lock을 true로 바꾸기) release 함수 임계 구역에서의 작업이 끝나고 호풀 현재 잠긴 임계 구역을 열기(lock을 false로 바꾸기) 바쁜 대기(busy waiting) 세마포 좀 더 일..

CS지식 쌓기 2024.01.02

동기화

동기화 공동의 목적을 위해 동시에 수행되는 프로세스 프로세스들의 수행 시기를 맞추는 것 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 실행 순서 제어를 위한 동기화 : reader writer problem writer : Book.txt 파일에 값을 저장하는 프로세스 Reader : Book.txt 파일에 저장된 값을 읽어 들이는 프로세스 reader와 writer프로세스는 무작정 아무렇게나 실행되어선 안된다 실행의 순서가 있기 때문 Reader프로세스는 Book.txt 안에 값이 존재한다는 특정 조건이 만족되어야만 실행 가능 상호 배제를 위한 동기화 : Bank account problem 공유가 불가능한 자원의..

CS지식 쌓기 2024.01.02

CPU 스케줄링 알고리즘

선입 선처리 스케줄링 FCFS(First Come First Served) 스케줄링 단순히 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링 먼저 CPU를 요청한 프로세스부터 CPU 할당 단점 : 프로세스들이 기다리는 시간이 매우 길어질 수 있다는 부작용 (=호위 효과) 최단 작업 우선 스케줄링 SJF(Shortest Job First) 스케줄링 호위 효과를 방지하려면? CPU 사용이 긴 프로세스는 나중에 실행, CPU 사용 시간이 짧은 프로세스는 먼저 실행 CPU 사용 시간이 가장 짧은 프로세스부터 처리하는 스케줄링 방식 라운드 로빈 스케줄링 RR(Round Robin) 스케줄링 선입 선처리 스케줄링 + 타임 슬라이스 타임슬라이스 : 각 프로세스가 CPU를 사용할 수 있는 정해진 시간 정해진 타임 슬..

CS지식 쌓기 2024.01.02

CPU 스케줄링

CPU 스케줄링 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 가장 공정한 CPU 스케줄링? 입출력 작업이 많은 프로세스 (=입출력 집중 프로세스) 가 CPU 작업이 많은 프로세스 (=CPU 집중 프로세스)의 우선 순위보다 높다 CPU를 비교적 적게 사용하는 입출력 집중 프로세스를 먼저 실행하여 끝낸 후 CPU를 많이 사용하는 CPU 집중 프로세스에게 CPU를 사용하게 해준다 스케쥴링 큐 자원을 쓰고싶어하는 프로세스들이 서는 줄 원래 큐 자료구조는 first in first out 이지만 스케줄링 큐는 아니다 준비 큐 - CPU를 이용하기 위해 기다리는 줄 대기 큐 입출력장치를 이용하기 위해 기다리는 줄 (입출력 장치마다 큐가 따로 있음) 같은 장치를 요구한 프로세스들은 같은 큐..

CS지식 쌓기 2024.01.02

스레드와 프로세스

스레드 프로세스를 구성하는 실행 흐름의 단위 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다 프로세스의 자원을 공유할 수 있다 멀티 스레드 프로세스 실행 흐름이 여러 개인 프로세스 프로세스를 이루는 여러 명령어 동시 실행 가능 스레드의 구성 요소 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보 동일한 작업을 수행하는 단일 스레드 프로세스 여러 개 실행 VS 하나의 프로세스를 여러 스레드로 실행 어떤 차이가 있을까? (멀티 프로세스와 멀티 스레드) 멀티 프로세스 프로세스를 fork하면 코드/데이터/힙 영역 등 모든 자원이 복제되어 저장됨 저장된 메모리 주소를 제외하면 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재 fork를 세 번 네 번 하면 메모..

CS지식 쌓기 2024.01.02

프로세스 상태와 계층 구조

프로세스 상태 생성 상태 이제 막 메모리에 적재되어 PCB를 할당 받은 상태 준비가 완료되었다면 준비 상태로 준비 상태 당장이라도 CPU를 할당받아 실행할 수 있음 자신의 차례가 아니기에 기다리는 상태 자신의 차례가 되면 실행 상태로 바뀜(=디스패치) 실행 상태 CPU를 할당 받아 실행 중인 상태 할당된 시간 모두 사용 시 준비 상태로 실행 도중 입출력 장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태 대기 상태 프로세스가 실행 도중 입출력 장치를 사용하는 경우 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듬 입출력 작업이 끝나면(입출력 완료 인터럽트를 받으면) 준비 상태로 종료 상태 프로세스가 종료된 상태 PCB, 프로세스의 메모리 영역 정리 프로세스 상태 다이어그램 프로세스 계층..

CS지식 쌓기 2024.01.02

프로세스

포그라운드 프로세스 사용자가 볼 수 있는 공간에서 실행되는 프로세스 백그라운드 프로세스 사용자가 볼 수 없는 공간에서 실행되는 프로세스 데몬, 서비스 - 사용자와 상호작용 하지 않고 그저 정해진 일만 수행하는 프로세스 프로세스 제어 블록 (PCB) 프로세스 관련 정보를 저장하는 상품에 달린 태크 같은 자료 구조 모든 프로세스는 실행을 위해 CPU가 필요하다 하지만 CPU 자원은 한정되어 있다 자신의 차례에 정해진 시간 만큼 CPU이용 타이머 인터럽트가 발생하면 차례 양보 PCB에 담기는 대표적인 정보 프로세스 ID (PID) : 특정 프로세스를 식별하기 위해 부여하는 고유 번호 레지스터 값 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원 → 실행 재개 프로그램 카운터, ..

CS지식 쌓기 2024.01.02

운영체제

운영체제란? 프로그램 실행에 있어 마땅히 필요한 요소 컴퓨터의 네 가지 핵심 부품 포함 실행할 프로그램에 필요한 자원을 할당 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 메모리의 커널 영역에 적재되어 실행되는 프로그램 실행 순서 및 얼마나 실행할지 정해줌 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나 커널 운영체제의 핵심 서비스를 담당하는 부분 유저 인터페이스 운영체제에 속하지만 커널에 속하지 않음 이중 모드 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식 사용자 모드 운영체제의 서비스를 제공 받을 수 없는 실행 모드 커널 영역의 코드를 실행할 수 없는 실행 모드 자원 접근 불가 커널 모드 운영체제의 서비스를 제공 받을 수 있는 실행 모드 자원 접근을 비롯..

CS지식 쌓기 2024.01.02

다양한 입출력 방법

프로그램 입출력 프로그램 속 명령어로 입출력 장치를 제어하는 방법 입출력 명령어로써 장치 컨트롤러와 상호작용 메모리에 저장된 정보를 하드디스크에 백업 CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령 내보내기 하드 디스크 컨트롤러는 하드디스크 상태 확인 → 상태 레지스터에 준비 완료 표시 CPU는 상태 레지스터를 주기적으로 읽어보며 하드 디스크의 준비 여부를 확인 하드 디스크가 준비되었다면 백업할 메모리의 정보를 데이터 레지스터에 쓰기 백업 작업이 끝나지 않았다면 1번부터 반복, 끝났다면 작업 종료 메모리 맵 입출력 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법 각각에 접근하는 명령어가 같음 고립형 입출력 메모리를 위한 주소 공간과..

CS지식 쌓기 2024.01.02