Computer Science/Operating System

메모리 관리 단일 프로그램만 쓰는 것이 아니라 다수의 프로세스를 수용시켜야 하기 때문에 이를 어떻게 메모리에 적재할 것인지 따져야 한다. 메모리 할당 메모리는 일반적으로 두 영역으로 나뉜다. OS 상주 영역(커널) 사용자 프로세스 영역 연속 할당: 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 것 고정 분할 방식(fixed partition allocation) 가변 분할 방식(variable partition allocation) 불연속 할당: 프로세스를 구성하는 주소 공간을 쪼개서 메모리의 여러 영역에 분산시켜 올리는 기법 페이징(paging) 세그먼테이션(segemtation) 메모리 단편화 내부 단편화 프로세스가 사용하는 메모리 공간 중 남는 부분 프로세스가 요청한 양보다 더 많은 메..
정의 프로세스들이 서로가 가진 자원을 기다리며 무한정 기다리고 있는 상태 발생 조건 다음의 4가지 조건 모두 만족해야한다. Mutual exclusin(상호배제) 매 순간 하나의 프로세스만이 자원을 사용할 수 있다. No preemption(비선점) 프로세스는 자원을 스스로 내려놓을 수 있지만 강제로 빼앗기지 않는다. Hold and wait(점유 대기) 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있는다. Circular wait(순환 대기) 자원을 기다리는 프로세스간에 사이클이 형성되어야 한다. 해결 방법 예방 교착 상태 발생 조건 중 하나를 제거하면서 해결한다 (자원 낭비 엄청 심함) 상호배제 부정 동시에 여러 프로세스가 자원을 접근할 수 있게 한다. 다만 공유..
정의 Semaphore S에서(S는 정수) P(S) -> 자원이 있으면 하나 가져가고 없으면 while문을 돌며 기다린다. V(S) -> 자원을 다 사용하고 반납하는 과정이다. 세마포어의 종류는 두 가지가 존재한다. 종류 counting semaphore 세마포어의 S가 범위가 0 이상인 임의의 정수 값이다. 자원의 숫자를 세는 데에 사용한다. binery semaphore(mutex) 세마포어의 S가 0 또는 1의 값만 가질 수 있는 세마포어로 주로 Lock/Unlock에 사용한다. 뮤텍스라고도 한다. 차이점 정리 둘 다 공유 자원에 접근할 수 있는 프로세스를 제한합니다. S라는 정수 값을 통해 접근할 수 있는 프로세스를 제한하는데, 세마포어는 S가 범위가 0 이상인 임의의 정수 값을 사용하므로, 최대..
race condition 두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황 race condition이 발생하는 경우 커널 작업을 수행하는 중에 인터럽트 발생 문제점 : 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우 해결법 : 커널이 작업을 수행중이면 인터럽트가 발생하더라도 먼저 하던 작업을 먼저 다 끝낸 뒤 인터럽트 처리 루틴을 실행하면 해결할 수 있다. 프로세스가 'System Call'을 하여 커널 모드로 진입하여 작업을 수행하는 도중 문맥 교환이 발생할 때 문제점 : 프로세스1이 커널모드에서..
CPU 스케줄링 CPU를 사용하기 위해 프로세스를 배정하는 작업 스케줄링 알고리즘 성능 척도 시스템 입장에서 성능 척도 Cpu Utilization(이용률) : 전체 시간중에서 cpu가 놀지 않고 일하는 시간의 비율 Throughput(처리량) : 단위 시간당 cpu가 프로세스를 얼마나 처리하는가 프로세스 입장에서 성능 척도 Turnaround Time(소요시간, 반환시간) : 프로세스가 cpu를 쓰러 들어와서 다시 반납하고 나갈 때 까지의 시간 Waiting Time(대기시간) : ready queue에서 대기하면서 소요된 모든 시간 Response time(응답시간) : ready queue에서 최초로 cpu를 얻기 전까지 시간 CPU 스케줄러 프로세스들은 queue라는 곳에서 관리가 되는데, 스케줄..
프로세스 프로세스 개념 컴퓨터에서 실행중인 프로그램을 말하고 OS로부터 시스템 자원을 할당 받는 작업의 단위입니다. 시스템 자원 CPU 시간 독립된 메모리 영역 code data heap stack 프로세스 상태 Running cpu를 잡고 instruction을 수행중인 상태 Ready cpu를 기다리는 상태(메모리 등 다른 조건을 모두 만족하고 언제든 cpu를 받으면 Running 할 수 있는 상태) Blocked cpu를 주어도 당장 instruction을 수행할 수 없는 상태 프로세스 자신이 요청한 이벤트(예: I/O)가 즉시 만족되지 않아 이를 기다리는 상태 ex) 디스크에서 file을 읽어와야 하는 경우 (추가) New 프로세스가 수행중인 상태 Terminated 수행이 끝난 상태(종료중인 상..
운영체제 = 커널 + 시스템 프로그램 커널 운영체제의 핵심부로 컴퓨터 자원(cpu, 메모리, 파일, 입출력 장치 등등)을 관리하는 역할을 수행 시스템 프로그램 사용자가 컴퓨터 자원에 접근하기 위해 사용하는 프로그램. 대표적으로 쉘(shell)이 있다. 사용자가 컴퓨터에게 전달하는 명령을 해석하는 프로그램. 즉, 커널과 사용자간의 다리 역할을 수행한다. 시스템 콜 응용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 사용할 수 있다. 이 때 이 인터페이스를 시스템 콜이라고 한다. 운영체제는 커널이 제공하는 서비스를 시스템콜을 이용해 제한함으로써 컴퓨터 자원을 보호합니다. 예시로는 프로세스 생성/종료나 I/O작업 등이 있습니다. (fork, exec, exit, wait)
hi-june
'Computer Science/Operating System' 카테고리의 글 목록