일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 백준 21606번
- 백준 17608번
- 백준 10000번
- 백준 9012번
- 이분 그래프(Bipartite Graph)
- 백준 2261번
- 알고리즘 개념
- 위상 정렬(Topology Sort)
- 백준 1707번
- BFS(Breadth First Search)
- 스택(Stack)
- 위상 정렬(Topological Sort)
- 다익스트라 알고리즘(Dijkstra Algorithm)
- 그래프(Graph)
- 분할 정복(Divide and Conquer)
- DFS(Depth First Search)
- 큐(Queue)
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- BFS
- 백준 2812번
- 이분 탐색(Binary Search)
- DFS
- DFS & BFS
- 트리(Tree)
- 동적 프로그래밍(Dynamic Programming)
- 백준 1948번
- 백준 18352번
- 그리디 알고리즘(Greedy Algorithm)
- 백준 2504번
- 백준 2493번
- Today
- Total
목록컴퓨터 시스템/운영체제 (10)
Always Be Wise

2. 비연속 할당(Non-Continuous Allocation) 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라가는 것을 의미한다. 사용자 프로그램을 여러 개의 블록으로 분할하고 실행 시 필요한 블록들만 메모리에 적재, 나머지 블록들은 스왑 디바이스(Swap Device)에 존재하는 방식으로 동작한다. 연속 할당에서의 주소 매핑(Address Mapping)은 상대 주소(Relative Address, 프로그램의 시작 주소를 0으로 가정한 주소)를 할당된 주소에(Allocation Address) 재배치(Relocation) 하는 과정을 통해 이루어진다. 비연속 할당 역시 가상 주소를 실제 주소로 바꾸어주는 주소 매핑 과정이 필요하다. 가상 주소는 연속된 메모리 할당을 가정한 주소이며, 실제 주소..

메모리 할당 메모리는 일반적으로 OS 상주 영역(낮은 주소 영역)과 사용자 프로세스 영역(높은 주소 영역)으로 나뉜다. 그중 사용자 프로세스 영역은 연속 할당과 비연속 할당, 두 가지 방법을 이용할 수 있다. 1. 연속 할당(Continuous Memory Allocation) 프로세스를 하나의 연속된 메모리 공간에 할당하는 것을 의미한다. 메모리를 구성함에 있어 동시에 올라갈 수 있는 프로세스의 수와 각 프로세스에게 할당되는 메모리 공간의 크기, 메모리를 분할하는 방법 등을 고려해야 한다. Uni-Programming 메모리에 하나의 프로세스만 존재하는 상태로, 가장 간단한 메모리 관리 기법이다. 다만, 여러 가지 문제점들이 존재한다. 첫 번째로 프로그램의 크기가 메모리 크기보다 큰 경우 프로그램을 실..

메모리(기억장치)의 종류와 계층 구조 Block이란? : 보조기억장치와 주기억장치 사이의 데이터 전송 단위(1KB~4KB) Word란? : 주기억장치와 레지스터 사이의 데이터 전송 단위(16~64 Bits) 주소 바인딩(Address Binding) 주소 바인딩(Address Binding)이란 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑하는 작업을 의미한다. 논리 주소란 프로세스마다 독립적으로 갖는 주소 공간을 의미하며, 각 프로세스마다 0부터 시작한다. CPU가 보는 주소는 논리적 주소이다. 물리 주소란 메모리에 실제 올라가는 위치를 의미한다. 바인딩(Binding) 시점에 따른 구분 1. 컴파일 타임 바인딩(Compile Time Binding) 컴파일러가 메모리에 적재될 프로세스의 위치..

교착 상태(Deadlock)의 개념 Blocked/Asleep State는 프로세스가 특정 이벤트, 필요한 자원을 기다리는 상태를 의미한다. 이렇게 프로세스가 이벤트 혹은 자원을 기다리는 상태 중에서 발생 가능성이 없는 이벤트, 자원을 기다리는 상태를 특별히 Deadlock State라고 한다. 교착 상태(Deadlock)와 기아 상태(Starvation) 교착 상태(Deadlock)는 Asleep State에서, 기아 상태(Starvation)는 Ready State에서 발생하며, 교착 상태가 기다리는 이벤트, 자원은 발생 가능성이 없으나, 기아 상태가 기다리는 이벤트, 자원은 발생 가능성은 있으나 우선순위 등에 밀리는 것을 의미한다. 교착 상태(Deadlock)와 자원(Resource) 자원은 일반적..

동기화 다중 프로그래밍 시스템 상에서 여러 개의 프로세스들은서로 독립적으로 동시에 동작한다. 그런데 프로세스들이 함께 사용하는 공유 자원 또는 데이터가 있을 때, 이를 동시에 사용하고자 한다면 문제가 발생할 수 있다. 이를 방지하기 위하여 프로세스들이 서로 동작을 맞추는 것, 서로의 상태 정보를 공유하는 것을 동기화라고 부른다. 동기화를 위한 개념 공유 데이터(Shared Data or Critical Data) : 여러 프로세스들이 공유하는 데이터 임계 영역(Critical Section) : 공유 데이터를 접근하는 코드 영역 상호 배제(Mutual Exclusion) : 둘 이상의 프로세스가 동시에 임계 영역에 진입하는 것을 막는 것 상호 배제 기본 연산(Mutual Exclusion Primiti..

스케줄링은 CPU 작업과 입출력 작업을 병행하는 다중 프로그래밍을 가능하게 하는 운영체제의 동작 기법이다. 자원을 할당할 프로세스를 선택하는 과정이라고 할 수 있다. 자원 관리는 하나의 자원을 번갈아 가며 사용하는 방식과 하나의 자원을 분할하여 동시에 사용하는 방식으로 구분할 수 있다. 예를 들어, 프로세서 사용시간을 프로세스들에게 분배하는 것은 전자에 속하며 시간 분할(Time Sharing) 이라 부른다. 프로세스 스케줄링이 여기에 속한다. 반면, 메모리 공간을 분할하여 동시에 사용하는 것은 후자에 속하며 공간 분할 (Space Sharing)이라 한다. 스케줄링의 목적 스케줄링의 목적은 시스템의 성능 향상이다. 대표적인 성능 지표는 응답 시간(작업 요청으로부터 응답을 받을 때까지의 시간), 작업 처..

스레드란 Light Weight Process로 프로세서 활용의 기본 단위이다. 스레드는 Thread ID, Register Set(PC 등), Stack(Local Data) 등으로 구성되어 있으며, 제어 요소 외 코드, 데이터, 힙 등 기타 자원들은 프로세스의 다른 스레드들과 공유해서 사용한다. 스레드의 장점 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속해서 처리할 수 있다. 또한, 커널의 개입 없이 자원을 공유해서 효율성이 높다. 프로세스의 생성 및 프로세스 간 문맥 전환에 비해 효율적이다. 스레드의 구현 스레드의 구현은 사용자 수준 스레드와 커널 수준 스레드, 혼합형 스레드로 구분할 수 있다. 사용자 수준 스레드는 POSIX threads, Java threads API, Win32..

작업(Job) / 프로그램(Program)과 프로세스 작업은 컴퓨터 시스템에 실행 요청을 하기 전 상태의 프로그램과 데이터를 의미하며, 프로세스는 시스템(커널)에 등록된 작업을 의미한다. 프로세스는 시스템 성능 향상을 위해 커널에 의해 관리된다. 프로세스와 프로세스 관리 블록 프로세스는 실행 중인 프로그램으로 커널에 등록되고 커널의 관리하에 있는 작업을 의미한다. 각종 자원들을 요청, 할당, 반납하는 능동적인 개체이며, 프로세스 관리 블록(PCB)을 할당받은 개체이다. 프로세스 관리 블록은 커널 공간에 존재하며 프로세스 생성 시 같이 생성되며, 각 프로세스들에 대한 정보를 관리한다. 프로세스 관리 블록이 관리하는 정보는 운영체제마다 다르나, 보통 프로세스 고유 식별 번호 (PID, Process Iden..

컴퓨터 하드웨어 1. 프로세서(Processor) : CPU, GPU, 응용 전용 처리 장치 등 CPU(컴퓨터의 두뇌, 중앙처리장치)란 컴퓨터의 다양한 연산을 수행하고, 모든 장치의 동작을 제어하는 하드웨어이다. 레지스터란 프로세서 내부에 있는 메모리로서 프로세서가 사용할 데이터를 저장하는 컴퓨터에서 가장 빠른 메모리이다. 운영체제와 프로세서 운영체제는 프로세서에게 처리할 작업을 할당(프로세스 생성) 및 관리하며, 프로그램의 프로세서 사용을 제어한다(프로그램의 프로세서 사용 시간 관리, 복수 프로그램간 사용 시간 조율 등). 2. 메모리(Memory) : 주 기억 장치, 보조 기억 장치 등 데이터를 저장하는 장치(기억 장치) 메모리의 종류는 레지스터, 캐시, 주 기억 장치(메인 메모리), 보조 기억 장치..

운영체제(Operating System)란, 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층을 의미한다. 협의의 운영체제(커널) 운영체제의 핵심 부분으로 메모리에 상주하는 부분, 가장 빈번하세 사용되는 기능들 담당 광의의 운영체제 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념 운영체제의 목적 1) 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 - 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것과 같은 환상을 제공한다. - 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행한다. 2) 컴퓨터 시스템의 자원을 효율적으로 관리 - 중앙처리장치(CPU), 메모리, 입출력장치(I/O) 등의 효율적 관리를 담당한다...