목록3학년 1학기/운영체제 (OS) (48)
오래 못 할 짓 하지 않기

알고리즘 종류 7개 각 스케줄링의 [ 작동 방식 , 특징 및 장단점 ] 을 위주로 알아두면 된다. 1. 선입 선처리 2. 최단 작업 우선 3. 라운드 로빈 4. 최소 잔여 시간 우선 5. 우선순위 6. 다단계 큐 7. 다단계 피드백 큐 스케줄링 ● 선입 선처리 - First Come , First Served 스케줄링 - 단순히 준비 큐에 삽입된 순서대로 처리 - 비선점 스케줄링 (앞에 먼저 온 애가 CPU 쓸 때 못 뺏어오니까 단점 : 프로세스들이 기다리는 시간이 매우 길어질 수 있다.= 효위 효과 // 공정하지만 효율성을 떨어진다. A가 기다리는 시간 : 0 B가 기다리는 시간 : 17 C가 기다리는 시간 : 22 ● 최단 작업 우선 - Shortest Job First - 위에 생겼던 호위효과를 방..

CPU 스케줄링 : OS가 프로세스들에게 CPU 자원을 배분하는 것 ● 프로세스 우선순위 주로 빨리 처리해야하는 프로세스들에게 = 프로세스마다 우선순위가 다르다. 입출력 작업이 많은 프로세스 = 입출력 집중 프로세스의 우선순위가 CPU 작업이 많은 프로세스 = CPU 집중 프로세스의 우선순위보다 높다. 이유 : 입출력 완료까지 실행하는 시간보다는 대기하는 시간에 있기 때문에 , 입출력 집중 프로세스에 빨리 주고 대기하게 하고, CPU 집중 프로세스가 편하게 쓰게 해준다. = 빨리 하고 나와라 ● 우선순위 배분 OS가 PCB를 보고 어떤 프로세스가 CPU를 많이 사용할지 정한다. 하지만 OS가 모든 프로세스의 PCB를 보는 것은 시간적으로 낭비가 크다. 스케줄링 큐 : 특정 자원을 사용하려고 하는 프로세스..

파이썬에서 프로세스 확인하기 Import os 한 뒤에 import os print("hello world") print("my pid is", os.getpid()) 이렇게 만들어 보았다. os 라이브러리에 있는 getpid() 메소드를 이용하면 내가 사용하고 있는 프로세스의 id를 알 수 있다. 매번 실행 때마다 os가 pid를 주는 것이 다르므로 pid값도 다르게 나온다 정확히는 실행이 끝나면 pid를 수거해가기 때문에 다음 실행에 새로운 pid를 받는다고 생각하면 된다. 다음 예시는 [ parent 프로세스 > parent가 만든 child 프로세스 > 그 child 프로세스에서 찾는 parent프로세스 ] 이렇게 찾는 걸 해볼거다 코드는 다음과 같다. from multiprocessing imp..

스레드(thread) : 프로세스를 구성하는 실행 흐름의 단위 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다. ● 실행 흐름이 하나인 프로세스 ( = 단일 스레드 프로세스 ) ● 실행 흐름이 여러 개인 프로세스 ( = 멀티 스레드 프로세스 ) → 프로세스를 이루는 여러 명령어를 동시에 실행 가능하다. 어떻게 여러 스레드가 동시에 나누어져서 실행될 수 있을까?? ● 스레드의 구성요소 : 스레드 ID / PC를 비롯한 Register 값 / Stack 실행에 필요한 최소한의 정보를 유지한 채 실행된다. 하지만 하나의 프로세스 내에 있는 스레드들은 해당 프로세스의 자원을 공유할 수 있다. 멀티 프로세스 vs 멀티 스레드 동일한 작업을 수행하는 단일 스레드 / 프로세스 여러 개 [ = 멀티 프로세스 ] ..

이런 거에 대해 알아볼 예정 프로세스 상태 프로세스는 5가지 상태로 나눌 수 있다 생성 / 준비 / 실행 / 대기 / 종료 ● 생성 상태 - 이제 막 메모리에 적재되어 PCB를 할당받은 상태 - 준비가 완료되면 준비 상태로 넘어감 ● 준비 상태 - CPU를 할당받아 실행할 수 있지만, 자신의 차례를 기다리는 상태 - 자신의 차례가 되면 실행상태로 (= 디스패치) ● 실행 상태 - CPU를 할당받아 실행 중인 상태 - 할당된 시간을 다 사용했을 때 (= Timer Interrupt 발생 시) 준비 상태로 돌아간다. - 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지(= 입출력 완료 Interrupt를 받을 때까지) 대기 상태 ● 대기 상태 - 프로세스가 실행 도중에 입출력 장치를 사용하는 경우 ..

프로세스 = 실행 중인 프로그램 이라고 대략적인 정리를 했다. 그렇다면 프로세스를 직접 확인해보자 간단하게 윈두우 작업 관리자로도 확인이 가능하다. 프로세스는 주로 두 가지로 나뉘는데 1) Foreground process → 사용자가 볼 수 있는 공간에서 실행되는 프로세스 2) Background process → 사용자가 볼 수 없는 공간에서 실행되는 프로세스 여기서도 둘 로 나뉘는데 - 사용자와 상호작용 가능한 백그라운드 프로세스 - 사용자와 상호작용하지 않고, 그저 정해진 일만 하는 프로세스 = 데몬, 서비 가 있다. 프로세스 제어 블록 그렇다면 OS가 이러한 프로세스를 어떻게 관리할까? → 프로세스를 실행하기 위해서는 CPU가 필요하다. 그러나, CPU 자원은 제한되어 있다. 따라서 프로세스들은..

OS는 규모가 가장 큰 프로그램 중 하나이다. 따라서, OS가 제공하는 기능은 아주 다양하지만 가장 핵심적인 서비스가 있다. ex) 휴대폰 - 여러 기능이 있지만 전화가 핵심 이러한 서비스들을 담당하는 부분을 커널(Kernel)이라고 한다. 그리고 우리가 운영체제를 공부한다는 것은 이러한 Kernel을 공부하는 것과 같다고 보면 된다. (+운영체제이지만, 커널은 아닌 것 = UI) 이중모드 / 시스템 호출 사용자가 실행하는 프로그램은 자원에 직접 접근할 수 있을까? or 접근해도 될까? → NO 1) CPU에서 한 프로그램이 실행 중인데, 다른 프로그램에서 접근하는 일이 발생할 수 있다. 2) 메모리에서 데이터들이 꼬일 수 있다. 따라서, 운영체제는 다른 프로그램이 자원 (CPU,SSD 등등...) 에 ..

운영체제란 = 프로그램을 위한 프로그램 1. 실행할 프로그램에 필요한 자원을 할당 2. 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 더보기 자원 / 시스템 자원 - 프로그램 실행에 있어 마땅히 필요한 요소 - 컴퓨터의 네 가지 핵심 부품 포함 - Hardware 만 얘기하는 것은 아니다. ※ 실행되는 프로그램 = MEM에 저장됨. → 운영체제도 메모리에 적재되어 실행된다. 단, 운영체제는 중요한 역할을 하기에 적재되는 영역이 정해져있다 = 커널 영역 ( 우리가 실행하는 일반적인 프로그램이 저장되는 영역 = 사용자 영역 ) 운영체제가 하는 메모리 관리 새로운 프로그램이 실행되어야 할 때 메모리에 있는 운영체제가 새로 시작될 프로그램이 어디에서 동작할지 메모리를 적재해주고 실행시킨다. 운영체제가 하는..