운영체제
-
파일 시스템(File Systems)Computer Engineering/운영체제 2019. 8. 23. 18:17
안녕하세요 dely입니다:) 오늘은 파일 시스템(File Systems)에 대해 정리해보겠습니다. 파일 시스템은 실제적인 데이터를 저장하는 파일과 파일들을 계층적으로 연결하는 디렉토리로 구성됩니다. 1. 파일(File) 파일은 관련된 정보들의 집합에 이름을 부여한 것으로 비휘발적 성질을 가진 물리적 장치에 저장됨으로써 영속성을 가질 수 있습니다. File attribute는 파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보들을 말합니다. 파일 이름이나 유형, 저장된 위치, 파일 사이즈와 같은 metadata들을 가지고 있게 됩니다. 2. 디렉토리(Directory) 파일의 메타데이터 중 일부를 보관하고 있는 일종의 특별한 파일입니다. 디렉토리 안에 있는 파일 이름 및 file attribute를..
-
가상 메모리(Virtual Memory)Computer Engineering/운영체제 2019. 8. 21. 22:09
안녕하세요 dely입니다:) 오늘은 가상 메모리(Virtual Memory)에 대해 정리해보겠습니다. 이전 포스팅에서 정리한 페이징 기법을 기반으로 메모리관리를 하는 것을 기반으로 합니다. 1. 요구 페이징(Demand Paging) Demand Paging은 프로그램 전체를 메모리에 올리는 것이 아니라 요청받은 페이지가 있을 때 그 페이지만 메모리에 올리는 것을 말합니다 I/O 양이 감소되고, 메모리 사용량도 감소하여 더 빠른 응답시간과 더 많은 사용자를 받을 수 있게 됩니다. 논리메모리에서 물리메모리로 넘어갈 때 페이지 테이블을 통해 메모리 주소를 관리하게 되는데, 물리메모리에 올라간 페이지는 페이지 테이블(Page table)에서 valid로 설정하게 됩니다. 2. 페이지 부재(Page Fault)..
-
메모리 관리(Memory Management)Computer Engineering/운영체제 2019. 8. 18. 00:42
안녕하세요 dely입니다:) 오늘은 메모리 관리(Memory Management)에 대해 정리해보겠습니다. 기존에 디스크에 있던 이진 형태의 파일들이 논리메모리(logical memory)에 있다가 물리메모리(physical memory)로 이동 할 때(즉, 디스크 파일->프로세스가 될 때) 주소 변환을 해야하는데 그 주소 변환은 하드웨어가 해주게 됩니다. (주소 변환은 논리적인 주소를 물리적인 주소로 맵핑하는 것으로 다음 포스팅인 가상 메모리에 정리할 예정입니다.) 메모리에 프로세스를 올릴 시점, 즉 주소 변환의 시점에 따라 Compile time인지, Load time인지, run time인지에 따라 각자 다른 특징들을 갖게 됩니다. 1. 주소의 할당(Address Binding) 1) 컴파일 시간(..
-
교착 상태(Deadlocks)Computer Engineering/운영체제 2019. 8. 17. 03:52
안녕하세요 dely입니다:) 오늘은 교착 상태(Deadlocks)에 대해 정리해보겠습니다. A는 실을 가지고 있고, B는 바늘을 가지고 있다고 할 때 A는 B에게 바늘을 달라고 요청하고, B는 A에게 실을 달라고 요청하는 상황을 가정해봅니다. 서로 요청만 하다가 아무도 바느질도 못하고 마음이 상해버리겠죠.....(응?) 이처럼 한정된 자원을 여러 프로세스들이 사용하려고 서로 경쟁하다보면 필요한 자원을 서로 점유하고 있어 프로세스가 상태를 변경할 수 없는 상황이 발생하는데 이를 교착상태(deadlocks)라고 합니다. 그래서 이를 해결하기 위해 어떤 상황에서 교착상태가 일어나는지, 어떤 방법으로 해결할 수 있는지, 미리 예방할 수 있는지 알아보도록 하겠습니다. 1. 교착 상태의 특징 교착 상태는 한 시스템..
-
프로세스 동기화(Process Synchronization)Computer Engineering/운영체제 2019. 8. 16. 05:07
안녕하세요 dely입니다:) 오늘은 프로세스 동기화(Process Synchronization)에 대해 정리해보겠습니다. 구글 스프레드시트를 공유문서로 두고 동시에 여러명이서 편집하다보면 내가 쓴 글자가 어느샌가 사라져버린 것을 발견하기도 합니다 주황색의 두루미(누구냐 넌...)가 편집해버렸기 때문입니다..... 이처럼 운영체제 내에서도 동시에 여러개의 스레드가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황이 발생하게 됩니다. 이를 경쟁 상황(race condition)이라고 합니다. 경쟁 상황으로부터 보호하기 위해서는 한 순간에 하나의 스레드만이 변수 count를 조작하도록 보장해야합니다. > 공유 자원에 대한 접근을 제어하는 방법 1. 임계 구역(Criti..
-
CPU 스케쥴링(CPU Scheduling)Computer Engineering/운영체제 2019. 8. 8. 20:06
안녕하세요 dely입니다:) 오늘은 CPU 스케쥴링에 대해 정리해보겠습니다. CPU 스케쥴링은 다중 프로그램 운영체제에서 CPU를 어떻게 하면 더 효율적으로 사용할 수 있을지에 대한 고민에 의해 생겨난 개념입니다. 즉, 같은 시간 내에 많은 양의 작업을 처리하기 위해 적합한 프로세스에게 CPU를 할당하기 위한 방법론이라고 할 수 있습니다. 프로세스 실행은 다음과 같이 CPU 실행과 입출력 대기의 사이클로 구성됩니다. CPU burst -> 입출력 burst -> CPU burst -> ... -> CPU burst -> 시스템 콜(실행 종료) 그런데 이때 CPU burst와 입출력 burst의 길이 차이가 생길 수 있습니다. 입출력 중심의 프로그램일 경우 CPU burst는 상대적으로 짧을 것이고, CP..
-
스레드(Threads)Computer Engineering/운영체제 2019. 7. 19. 00:47
안녕하세요 dely입니다:) 오늘은 저번 프로세스 글에서 문맥교환을 피하기 위한 방법으로 언급된 스레드에 대해 정리해보겠습니다. - 스레드(Threads)란? 스레드(Threads)는 경량 프로세스라고도 불리고, CPU 이용의 기본 단위입니다. 현대의 프로세스는 다수의 제어 스레드를 가지고 있기 때문에 여러가지 작업을 할 수 있게 됩니다.(다중 스레드) 스레드는 ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성되어 있습니다. 그리고 코드, 데이터, 파일, 신호와 같은 운영체제 자원들을 같은 프로세스에 속한 다른 스레드들과 공유하게 됩니다. - 다중 스레드를 이용한 프로그래밍의 장점 다중 스레드를 이용한 프로그래밍은 다음과 같은 장점이 있습니다. 응답성(프로그램에서 큰 작업을 수행할 때 다른 스레드를..
-
프로세스(Process)Computer Engineering/운영체제 2019. 7. 13. 17:12
안녕하세요 dely입니다:) 오늘은 운영체제 프로세스에 대해 정리해보려고 합니다. 프로세스는 현재 컴퓨터에서 실행하고 있는 프로그램이라고 간단히 표현할 수 있습니다. 과거 한 대의 컴퓨터가 하나의 작업만 할 수 있던 때에는 필요없었지만 현대의 한 대의 컴퓨터에서 여러 작업을 수행하는 시분할 시스템에서 필요한 개념이라고 합니다. 왜냐하면 컴퓨터가 일을 하는 데에는 메모리, CPU 같은 여러 자원들이 필요한데, 한 대의 컴퓨터에서 여러 작업(task)들이 이 자원들을 서로 자기가 먼저 쓰겠다고 하는 상황이 일어나기 때문입니다. - 프로세스?? 프로세스에는 사실 우리가 흔히 생각하는 수동적인 프로그램이라기보단 다음에 실행할 명령어를 지정하는 프로그램 카운터(PC)와 연관된 자원의 집합을 가진 능동적인 존재(?..