학교 공부/OS

    운영 체제 (Operating System)

    0. 운영 체제란? 운영 체제 또는 오퍼레이팅 시스템(Operating System, 약칭:OS)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다. 또한 입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 중재 역할을 한다.[1][2] 그러나 응용 프로그램 코드는 일반적으로 하드웨어에서 직접 실행된다. 운영 체제는 휴대 전화, 게임기에서부터 슈퍼컴퓨터, 웹 서버에 이르기까지 컴퓨터를 포함하는 거의 모든 장치에서 볼 수 있다. 잘 알려진 현대의 PC 운영 체제에는 마이크로소프트 윈도우, 맥 OS X, 리눅스가 있다.[3] 운영 체제는 실행되는 응용 프로그램들..

    운영 체제 (Operating System) - File system

    1. File system 1-1. File system의 정의 파일이란 무엇일까? 파일은 Byte의 배열 혹은 연관된 정보의 집합이다. 다음은 File과 Address soace를 비교한 표이다. File system은 File과 Physical disk block간의 Mapping을 제공한다. 따라서 사용자는 File이 저장된 위치를 알 필요 없이 사용 가능한 것이다(Independence)(File 안다면 Data block 고려할 필요 X) 또 다른 관점으로 file system은 Disk에 들어가 있는 File 전체를 총칭한다. File system에 따라 File들의 배치나 구성이 달라질 수 있다.(윈도우는 C를 기준으로, 리눅스는 /를 기준으로 대충 이런거) 그럼 파일은 어떤 것을 의미해서 ..

    운영 체제 (Operating System) - Memory Management (2)

    1. Page Replacement 이전 포스터에서 Demaind Paging을 다뤘는데, 필요할 때 VM을 Secondary storage에서 PM으로 로드하는 방식을 이용한다고 하였다. 하지만 User process가 사용하는 VM의 Page수보다 PM의 Frame 수가 적기 때문에 이미 할당된 PM의 Frame을 요구된 Page로 교체해줄 필요성이 생겼다. 이것이 Page replacement이다. Page replacement는 PM에 위치한 Page를 Disk에 저장하고 요구된 Page가 해당 Frame을 할당 받도록 하는 방법이다. 이는 다음과 같은 순서로 진행된다. 디스크에서 요구된 Page의 위치를 찾는다 -> 물리 Memory에서 Free frame을 찾는다. (Free frame이 있다..

    운영 체제 (Operating System) - 동기화 (2)

    저번 시간에는 어떻게 동기화를 어떻게 얻을 수 있는지에 대해서 알아보았다. 이번 시간에는 동기화에 어떤 문제들이 있고, 어떻게 해결했는지에 대해서 알아보자. 이번에 알아볼 동기화 고전 문제는 1)Bounded-buffer problem(Consumer produce problem), 2)Readers and writers problem, 3)Dining philosophers problem이다. 1. Bounded-buffer problem(Consumer produce problem) 말그대로 Bounded-buffer(유한 크기의 버퍼)에서 발생할 수 있는 동기화 문제이다. 그 Bounded buffer에 여러 생산자와 여러 소비자가 동시에 접근하게 되면서 생기는 동기화 문제를 다룬다. 문제 설명에 ..

    운영 체제 (Operating System) - 9. 동기화 (1)

    1. Data Consistency 이번 강의는 Data Consistency(데이터 일관성)를 해치는 동시 접근 문제에 대해서 알아보자. 데이터 일관성을 유지하기 위해서 서로 협력하는 프로세스들이 순차적으로 수행하게 만드는 동기화 기법이 필요하다. 이를 Process synchronization이라고 표현한다. 그렇다면 Data consistency라는게 어떤 상황에서 발생할까? Shared memory를 사용하는 A와 B가 있다고 가정하자. 다음은 그 프로세스의 코드이다. 얼핏 보기에는 어떤 문장이 먼저 실행되든지 한 문장씩 실행되면 되므로 Data consistency를 해치지 않을 것 처럼 보인다. 하지만 이를 어셈블리로 분해해서 레지스터까지 고려한다면 이야기는 달라진다. CPU는 계산을 위해서 ..

    운영 체제 (Operating System) - Thread

    1. Thread의 정의 이전 강의에서 보았듯이, Process는 Scheduling 단위인 Execution unit과 자원의 보호인 Protection domain의 추상화로, Program을 실행한 개념이다. 그런데 프로세스에 실행 흐름이 다수 개라면 이 개념만으로 표현할 수 있을까? 그래서 하나의 실행 흐름(실행 혹은 스케줄링 단위, Execution unit)인 Thread를 도입하였다. Thread는 프로세스 내의 실행 흐름으로 프로세스보다 작으며 동일 프로세스 내의 Thread간에는 Protection domain이 존재하지 않는다(Data, Code, Heap영역을 공유한다). Thread를 여러 개로 표현하여 다수의 실행 흐름을 구현하면 병렬적으로 태스크를 실행할 수 있기 때문에 병렬적으..