일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 캡슐화
- 큐
- 객체지향 프로그래밍
- BFS
- queue
- 백준 #
- OS
- 논리 메모리
- SW Expert Academy
- Python
- java
- 자료구조
- 데드락
- 파이썬
- springboot
- 디바이스 입출력
- integretion test
- 다익스트라
- DFS
- 코딩 테스트
- DP
- OOP
- stack
- error
- 프로세스
- 운영체제
- 백준
- unionfind
- 유니크 키
- 스택
- Today
- Total
목록OS (15)
middlefitting
가상 메모리 논리 메모리는 물리 메모리보다 큰 공간을 가지고 있습니다. 논리 메모리는 프로세스별로 할당되는 메모리, 물리 메모리는 실제 저장이 이루어지는 공간을 말합니다. 어떻게 논리 메모리는 물리 메모리보다 큰 공간을 가지게 되는 것일까요? 그것은 운영체제의 가상메모리 기법에 의해 가능합니다. 가상 메모리 기법은 논리 메모리와 물리 메모리를 분리하기 위한 기술이며, 이를 이용하여 논리 메모리가 물리 메모리 공간보다 커지는 것을 가능하게 해주게 됩니다. 그러한 가상 메모리 기술에 대해 알아보도록 하겠습니다. Demand Paging 실제로 필요한 페이지만 메모리에 올리는 것을 말합니다. 논리 메모리의 페이지를 모두 물리 메모리에 한번에 올린다면, 실제로 아직 사용되지 않는 페이지까지 모조리 올려버리는 것..
물리 메모리 영역 물리 메모리 영역은 일반적으로 OS 상주역역, 사용자 프로세스 영역으로 나뉘어 사용됩니다. OS 상주역역은 주로 낮은 주소 영역을 사용하고, 사용자 프로세스 영역은 높은 영역을 사용하는데, 사용자 프로세스 영역의 할당 기법에는 연속 할당, 불연속 할당 기법이 존재합니다. 여기서 운영체제의 메모리 할당은 고려하지 않아도 되는 것일까요? 운영체제는 컴퓨터가 시작하고 종료될때까지 가장 먼저 실행되고 멈추지 않고 돌아가는 프로그램입니다. 따라서 운영체제는 당연히 물리 메모리에 올라가 있다고 생각하시면 될 것 같습니다. 연속 할당 연속 할당이란 프로그램이 통째로 메모리 한 장소에 올라가는 것을 말합니다. 통째로 올라간다는 것은 메모리의 연속적인 공간에 적재된다는 것을 말합니다. 연속할당의 방법에..
Logical Address vs Physical Address 물리적 메모리 관리에 앞서 논리 메모리 주소와 물리 메모리 주소에 관해 알아보고자 합니다. 논리적 주소는 가상 주소라고도 말하며, 프로세스마다 독립적으로 가지는 주소 공간을 말합니다. 물리적 주소는 실제 메모리 하드웨어에 올라와 있는 주소를 말합니다. 이 두개가 나누어져 있는 이유는 일반적으로 논리적 메모리가 물리적 메모리보다 크기 때문입니다. 물리적 메모리에는 그때 그때 필요한 메모리가 들어가게 되고, 만약 공간이 부족할 경우에는 Swap 영역으로 쫓겨나게 되는 것입니다. 쫓겨났던 메모리가 다시 들어오게 될 때에는 Swap 영역에서 다시 물리 메모리 공간으로 들어온다고 생각하실 수 있습니다. 주소 바인딩 컴파일시에 심볼 주소는 논리형 숫자..
데드락의 처리방법 데드락은 상호배제, 비선점, 보유 대기 및 순환대기 조건이 모두 충족되어야 발생할 수 있습니다. 즉 해당 조건이 충족되지 않게 한다면, 데드락 발생을 예방할 수 있다는 말이 됩니다. 데드락의 처리 방법에는 다음과 같은 크게 4가지 방법이 존재합니다. Deadlock prevention 가장 강력한 방지법으로 데드락이 발생할 수 있는 원천적인 요소, 발생조건을 차단하는 것을 말합니다. 상호 배제의 경우 공유하는 자원의 경우 반드시 성립해야 하기 때문에 다른 발생조건을 방지하는 방법으로 진행합니다. 점유 대기 방지 해당 조건을 방지하기 위해서는 자원을 요청하는 상황에서는 어떠한 자원을 보유하지 못하게 진행합니다. 방법은 대표적으로 두가지가 존재합니다. 첫 번째는 프로세스가 시작될 때 필요한..
데드락이란 데드락은 남아있는 자원이 없는 상황에서 자원을 점유한 프로세스들이 희생을 하지 않고, 다른 자원을 요청하면서 발생하는 교착상태를 말합니다. 즉 일련의 프로세스들이 서로가 가진 자원을 기다리며 막혀 있는 상태입니다. 여기서 말하는 자원은 하드웨어 소프트웨어 등을 포함하는 개념입니다. 데드락 발생 조건 데드락 발생에는 4가지 조건이 존재하며, 어느 한 조건도 만족하지 않는다면 데드락은 발생하지 않습니다. 상호배제 (Mutual exclusion) 획득한 자원을 독점적으로 사용하는 것을 말합니다 비선점 (No preemption) 프로세스는 자원을 스스로 내어놓을 뿐, 빼앗기지 않는 것을 말합니다. 보유 대기 (Hold and wait) 자원을 가진 프로세스가 자원을 놓지 않고 자원을 기다리는 것을..
Semaphores 세마포어는 공유된 자원, Critical Section에 여러 프로세스가 접근하는 것을 방지합니다. 세마포어는 동기화 도구로써 동기화 대상이 1개 이상일 때 사용합니다. 공유 자원에 접근할 수 있는 프로세스의 최대 허용치만큼 동시에 사용자가 접근할 수 있으며, 각 프로세스는 세마포어의 값을 확인하고 변경할 수 있습니다. 세마포어를 사용하기 위해서 다음과 같은 두 연산이 정의됩니다. P(S) P 연산은 락을 거는 과정으로 공유 데이터인 세마포어 변수 값을 획득합니다. 남아있는 자원이 없을 경우 대기를 하게되고, 누군가 자원을 내어 놓으면 자원을 획득하게 됩니다. V(S) V 연산은 락을 푸는 과정으로, 공유 데이터인 세마포어 값을 반납합니다. 대기하고 있는 프로세스가 있을 경우 자원을 ..
프로세스 동기화 문제란 프로세스 동기화 문제란 공유 데이터의 동시 접근이 발생하는 경우에는 데이터의 불일치 문제를 발생시킬 수 있는 것을 말합니다. 일관성 유지를 위해서는 협력 프로세스 간의 실행 순서를 정해주는 메커니즘이 필요하게 됩니다. 동기화 문제의 예시를 들어 보겠습니다. 1. 특정 공유데이터 x = 1 가 있다고 가정합니다. 2. 해당 공유데이터는 프로세스 A, B가 공유합니다. 2; 먼저 한 프로세스 A가 해당 공유데이터를 읽어들이면 x = 1 을 읽어오게 됩니다. 3. 그리고 그 상태에서 interrupt가 발생하여 CPU를 다른 프로세스 B가 점유하게 되었습니다. 4. 그리고 프로세스 B가 공유 데이터에 x += 1 명령을 수행해서 x = 2 가 되었습니다. 5. 그리고 다시 프로세스 A가..
컴퓨터 CPU 구조에 관한 간단한 구조를 다루려고 합니다. 해당 글에서는 CPU, 레지스터, 메모리, 타이머 및 I/O 디바이스에 관해서 다루고자 합니다. CPU 란 무엇인가 CPU란 컴퓨터에서 가장 빠른 하드웨어 장치이며, 역할은 현재 CPU를 점유하는 매 인스트럭션을 실행시킵니다. 인스트럭션이란 컴퓨터에게 일을 시키는 단위로서, 기계어로 이루어진 명령어를 말합니다. 연산자가 표시되는 연산자부와 자료의 정보가 표시되는 자료부로 구성됩니다. CPU의 운명은 메모리에서 인스트럭션을 읽어들이는 것, 그뿐입니다. 레지스터란 무엇인가 레지스터란 메모리보다 빠르면서 정보를 저장할 수 있는 작은 공간을 말합니다. CPU와 메인 메모리는 속도 차이가 크게 나기 때문에, 그 중간에서 속도의 차이를 극복할 수 있도록 도..
CPU 스케줄링이란 운영체제의 CPU는 프로세스들이 돌아가면서 사용하게 됩니다. 때문의 ready 상태의 프로세스들 중 누구에게 CPU를 줄 것인지 결정하는 전략이 필요합니다. CPU 스케줄링은 ready 상태의 프로세스를 CPU 스케줄러가 선택하고, Dispatcher는 CPU 제어권을 스케줄러에 의해 선택된 프로세스에게 넘기게 됩니다. CPU 스케줄링은 언제 일어나는가 CPU 스케줄링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우입니다. Nonpreemptive (자진 반납) I/O 요청의 시스템 콜 발생 (running -> blocked) terminate Preemptive (강제 반납) 할당 시간 만료로 timer interrupt가 발생하는 경우 (running -> rea..
프로세스 생성 프로세는 부모 프로세스로부터 생성되게 됩니다. 프로 프로세스가 fork 시스템 콜을 호출하면 해당 부모 상태를 복제한 자식 프로세스가 생겨나게 됩니다. 자식 프로세스는 부모 프로세스의 주소 공간을 복사하고, PCB와 같은 자원들도 복제하게 됩니다. 자식 프로세스는 exec 시스템 콜을 통해 새로운 프로그램을 메모리에 올릴 수 있습니다. 따라서 프로세스의 생성 단계는 다음과 같이 이루어집니다. fork() -> 부모 프로세스의 복제 -> exec() -> 새로운 프로그램 덮어쓰기 COW 파일 시스템으로 많이 나오는 개념으로, 자식 프로세스가 부모 프로세스와 자원을 공유하다가. write가 발생하면 내용이 바뀌므로 그때 메모리 공간을 복사한다는 개념입니다. copy 또한 필요한 부분만 올라가게..
프로세스의 개념 프로세스는 실행중인 프로그램을 말합니다. 프로세스가 어떤 의미로 사용되었는지 알기 위해서는 문맥을 알아야 하는데, 문맥을 기준으로 프로세스가 어떻게 진행했는지, 시점이 어떤지 알 수 있기 때문입니다. 프로세스의 문맥은 다음과 같이 존재합니다. CPU 수행 상태를 나타내는 하드웨어 문맥 Program Counte, Register 프로세스의 주소 공간 Code, data, stack 프로세스 관련 커널 자료 구조 PCB, Kernel stack 프로세스의 상태 프로세스는 상태가 변경되며 수행됩니다. 상태가 변경되는 가장 큰 요인은 한 프로세스가 CPU를 계속 점유하지 않고 서로 돌아가면서 쓰기 때문이며, 상태의 종류는 다음과 같습니다. New 프로세스가 생성중인 상태를 말합니다. Ready..
Context Swtich 란? Context Switch (문맥 교환) 은 운영체제에서 아주 중요한 개념입니다. 문맥교환이란 CPU가 사용자 프로그램에서 다른 사용자 프로그램으로 넘어가는 것을 말합니다. 현대적인 운영체제에서 CPU는 사용자 프로그램이 번갈아가면서 사용하는 자원이기 때문에 문맥 교환은 당연히 일어날 것입니다. CPU는 굉장히 빠른 자원이기 때문에 여러 사용자 프로그램이 번갈아가면서 사용합니다. Timer 만료, I/O, 시스템 콜 등 다양한 Interrupt가 걸리게 되면 CPU는 운영체제로 넘어가게 되고, 운영체제는 가장 CPU 우선권이 있는 사용자 프로그램에게 CPU를 넘겨주게 됩니다. Context Switch 에 필요한 작업 문맥 교환을 위해서는 교환 이전 시점을 알아야 합니다...
입출력(I/O)이란 CPU 를 점유한 운영체제가 디바이스 컨트롤러에게 I/O 요청을 보내는 것을 말합니다. 입출력는 동기 방식과 비동기 방식이 존재합니다. 동기와 비동기 동기와 비동기는 싱크를 맞추는 것의 따라 구분됩니다. 싱크를 맞춘다는 것은 시간적으로 맞추는 것을 뜻하며, 동기는 싱크를 맞추는 경우, 비동기는 싱크를 맞추지 않는 경우인 것입니다. 동기식 입출력 시스템 콜을 통해 I/O 를 요청한 사용자 프로그램이 I/O 작업이 끝난 이후에 다른 일을 할 수 있는 경우를 말합니다. I/O 요청의 결과를 통해 일련의 과정을 수행할 수 있는 경우가 해당될 것입니다. 현대적인 방식은 CPU 낭비를 방지하기 위해 시스템 콜을 통해 I/O 를 요청한 사용자 프로그램은 운영체제에 CPU 를 넘겨주게 되고, 운영체..
I/O 디바이스란 I/O 디바이스는 입출력을 수행할 수 있는 하드웨어 장치를 말합니다. I/O 디바이스 종류의 예시는 다음과 같습니다. Input : 키보드 Output: 모니터 Input / Output: 하드디스크 I/O 의 작업과정 입출력은 디바이스 컨트롤러를 통해 명령을 수행 디바이스 컨트롤러란 I/O 디바이스를 전담하는 CPU 같은 것이고, 디바이스 내부를 통제합니다. CPU는 직접 I/O 디바이스를 통제하지 않고 디바이스 컨트롤러에 위임을 하여 작업을 수행합니다. 그런 구조로 진행이 되는 이유는 컴퓨터에서 가장 빠른 CPU의 낭비가 이루어지면 안되기 때문입니다. 작업속도는 CPU >>>>> Lam >>>>> I/O 입니다. 따라서 CPU가 자기보다 상대적으로 느린 I/O 작업을 담당하고 기다리..
운영체제란 좁은 의미로는 커널을 의미합니다. 넓은 의미로는 커널을 포함한 여러 주변 시스템 유틸리티를 포함한 개념입니다. 운영체제의 목적 하드웨어, 자원을 효율적으로 관리합니다. 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공합니다 운영체제의 분류 동시 작업 가능 여부 단일 작업 싱글 테스킹 방식, 한번의 하나의 작업만 수행할 수 있습니다. 예시로는 MS-DOS 등이 존재합니다. 다중 작업 현대적인 운영체제를 말합니다. 멀티 테스킹 방식, 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있습니다. 사용자의 수 단일 사용자 사용자 개인 PC를 말합니다 다중 사용자 다중 사용자가 존재하는 웹 사이트와 같은 서버의 운영체제를 말합니다. 예시로는 UNIX, NT Server 등이 존재합..