본문 바로가기

CS

교착상태(DeadLock) - 교착 상태란? 한정된 자원을 여러 곳에서 사용하려 할 때 발생하는 문제 즉, 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 현재 서로 원하는 자원이 상대방에게 할당되어 있어서 두 프로세스는 무한정 wait 상태에 빠지게 됨 -> DeadLock - 발생하는 경우 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황 발생 한 프로세스가 자원을 요청했을 때, 그 자원을 사용할 수 없는 상황 발생 -> 프로세스는 대기 상태로 들어감 대기 상태로 들어간 프로세스들이 실행 상태로 변경될 수 없을 때 DeadLock 발생 - 교착 상태 발생 조건 1) 상호 배제(Mutual Exclusion) 자원은 한 번에 한 프로세스만 사용 가능 2) 점유 대기(Hold and Wait) 최소..
동기화 문제 - 동기 vs 비동기 1) 동기(synchronous) 동시에 일어난다는 뜻(요청과 결과가 동시에 일어남) 바로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 함 요청과 결과가 한 자리에서 동시에 일어남 A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞춤 설계가 매우 간단, 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 함 -> 실행되었을 때 값이 반환되기 전까지 blocking 2) 비동기(asynchronous) 동시에 일어나지 않는다는 뜻(요청과 결과가 동시에 일어나지 않음) 요청한 그 자리에서 결과가 주어지지 않음 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 됨 설계가 복잡하지만, 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 ..
CPU 스케줄링 - CPU Scheduling이란? CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스가 작업을 수행해야 함, 이때 어떤 프로세스를 다음에 처리할지 선택하는 알고리즘 따라서 상황에 맞게 CPU를 어떤 프로세스에 배정하여 효율적으로 처리하는가가 관건 - Preemptive vs Non-Preemptive 1) Preemptive(선점) 프로세스가 CPU를 점유하고 있는 동안 I/O나 인터럽트가 발생하지 않았음에도 다른 프로세스가 해당 CPU를 강제로 점유 가능 프로세스가 정상적으로 수행중인 동안 다른 프로세스가 CPU를 강제로 점유하여 실행 가능 2) Non-Preemptive(비선점) 한 프로세스가 CPU를 점유했다면 I/O나 인터럽트 발생 또는 프로세스가 종료될 때까지 다른 프로세스가 CPU를 점유하..
스케줄러(Scheduler) 종류 - 스케줄러(Scheduler)란? 프로세스들은 자신이 종료될 때까지 수많은 큐들을 돌아다님 -> OS는 이 큐 안에 있는 프로세스 중 하나를 선택해야 함 => 이러한 일을 스케줄러(Scheduler)가 담당 Job Queue : 현재 시스템 내의 모든 프로세스 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU를 할당받고 실행되기 위해 기다리는 프로세스의 집합 Device Queue : 각각의 장치마다 서비스를 기다리며 줄 서 있는 프로세스의 집합 1) 장기 스케줄러(Long-term scheduler or Job scheduler) 메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장 이 pool 에 저장되어 있는 프로..
스레드(Thread) - 스레드(Thread)란? 프로세스의 실행 단위 한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 주소 공간이나 자원을 공유 스레드는 프로세스 내의 Code, Data, Heap 영역은 다른 스레드와 공유하고 Stack 영역은 따로 할당 받음 여러 스레드는 한 프로세스 내의 공유 자원을 공유하지만, 프로세스 간에는 메모리에 접근 불가 스레드는 별도의 Register와 Stack을 갖고 있으며, 다른 영역을 공유 -> 한 스레드가 프로세스의 자원을 변경하면, 다른 스레드도 변경 결과를 즉시 확인 가능 (스레드 구성 : 스레드 ID, PC, Register, Stack) - 스택을 스레드마다 독립적으로 할당하는 이유? 스택은 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하..
프로세스(Process) - 프로세스(Process)란? 실행중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것(스케줄링 개체) 운영체제로부터 시스템 자원을 할당 받음(CPU 시간, 운영되기 위한 주소 공간, Code, Data, Stack, Heap의 구조로 되어있는 독립된 메모리 영역) 각각의 프로세스는 자신의 메모리, 가상 CPU, 상태 등을 가짐 - CPU의 가상화 multiple processes의 time sharing Context switch : CPU에서 프로그램의 실행을 중지하고 다른 프로그램 실행을 시작하는 기능 스케줄링 정책 : 기록된 정보 또는 작업량 또는 성능 메트릭 기반 - 프로세스 구조 자원 실행을 위해 필요한 것 1) CPU Register(PC, SP, ...) 2..
운영체제(Operating Systems)란? - 컴퓨터 시스템의 계층적 구조 - 운영체제 정의 운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공(응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공) 1) 자원 관리자(Resource manager) Physical resources : CPU(core), DRAM, Disk, Flash, KBD, Network, ... Virtual resources : Process, T..
해시 테이블(Hash Table) * 해시 테이블 좋은 해시 함수 : 데이터가 테이블의 전체 영역에 고루 분포되는 것 -> 충돌이 발생할 확률이 낮음 좋지 않은 해시 함수 : 테이블의 특정 영역에 데이터가 몰린 것 -> 충돌이 발생할 확률이 높음 * 충돌 문제의 해결책 충돌(collision) : 서로 다른 두 개의 키가 해시 함수를 통과하였을 때, 결과가 모두 동일한 경우 1) 선형 조사법과 이차 조사법 충돌이 발생했을 때 그 옆자리가 비었는지 살펴보고, 비었을 경우 그 자리에 대신 저장하는 것 f(k) + 1 → f(k) + 2 → ... => 충돌의 횟수가 증가함에 따라 '클러스터 현상(특정 영역에 데이터가 몰리는 현상)' 발생 따라서 이차 조사법 사용 f(k) + 1^2 → f(k) + 2^2 →... 2) 이중 해시 두 개의 해..