본문 바로가기

728x90
반응형

운영체제

(8)
[운영체제] Thread의 개념 본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau' 내의 이미지와 내용을 포함하고 있습니다 :) 이번 시간에는 thread에 대한 개념에 대해서 배워보고자 합니다. 여러 개발 환경에서 자주 등장하고, 또 중요한 개념이기 때문에 처음부터 차근차근 다뤄보겠습니다. Thread의 필요성 시스템의 자원은 정해져있기 때문에, 모든 프로세스가 시스템의 자원에 동시에 접근할 수는 없습니다. 따라서 스케쥴링 정책에 따라 프로세스에게 순번을 부여해서 어떤 프로세스가 먼저 자원을 사용할 것인지 정하고, 줄을 서고 기다리는 과정을 거쳐야할 뿐만 아니라, 다른 프로세스의 일을 처리하기 위해서 c..
[운영체제] System Call 본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau' 내의 이미지와 내용을 포함하고 있습니다 :) 이번 시간에는 System Call에 대해서 좀 더 자세하게 배워보고자 합니다! System Call은 user mode가 건드릴 수 없는 자원에 대한 operation을 kernel mode에게 대신 해달라고 부탁하는 함수입니다. System Call의 등장 배경은 아래의 글을 참고해주세요! programming-workspace.tistory.com/32 [운영체제] Direct Execution과 Limited Direct Execution 본 글의 일부분은 서적 'Oper..
[운영체제] Direct Execution과 Limited Direct Execution 본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau' 내의 이미지와 내용을 포함하고 있습니다 :) 이번 시간에는 Direct Execution과, Limited Direct Exeucution에 대해서 배워보고자 합니다! Direct Execution Direct Execution이란, Program에서 어떤 코드를 돌리던지 OS는 간섭하지 않는 것입니다! 즉, OS가 PCB를 생성하고 인자를 stack에 할당 해주는 등 초기 작업을 다 마친 후에 프로그램의 main()을 호출해서 실행함으로써 OS에서 프로그램으로 영역이 넘어간 다음에는 프로그램이 메모리를 할당하던, 새로운 ..
[운영체제] 프로세스 API 본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau' 내의 이미지와 내용을 포함하고 있습니다 :) 이번 시간에는 프로세스 API에 대해서 배워보고자 합니다. 운영체제는 프로세스 생성이나 삭제 등, 프로세스와 관련된 함수를 user에게 제공합니다. 프로세스의 생성 프로세스는 부모 프로세스가 자식 프로세스를 생성함으로써 만들어집니다. 즉, parnet process가 있어야 child process 도 있는 것입니다. 따라서 아래와 같은 트리의 모습으로 프로세스의 관계를 그릴 수 있습니다. 프로세스가 생성되면서 자원 공유나 실행 등의 측면에서 여러가지 선택이 가능한데, 하나씩 알..
[운영체제] 프로세스(Process)란 무엇일까? 본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau' 내의 이미지와 내용을 포함하고 있습니다 :) 프로세스의 정의 프로세스는 '실행중인 프로그램'을 의미합니다. 프로그램은 디스크에 저장 공간만 있으면 되지만, 프로세스는 실행되기 위해 별도의 메모리 공간(실행 코드, 전역변수, 스택, 힙 ... )이 필요합니다. 따라서 프로세스는 기본적으로 code(Text), Data, Stack, Heap을 저장하기 위한 Memory(address space)와 Program counter (PC), Stack pointer을 저장하기 위한 Register가 필요합니다. 프로세스의 생성 프..
[운영체제] CPU 가상화의 기본 개념 본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau' 내의 이미지와 내용을 포함하고 있습니다 :) CPU 가상화 CPU는 프로세스가 어떤 작업을 수행하기 위한 연산을 위해서 필요한 자원입니다. 우선 Virtualization에 대해 다시 한 번 짚고 넘어 가봅시다. 가상화란, 물리적으로는 하나 밖에 없는 것을 마치 각자 하나씩 있는 것처럼 착각하게 만드는 것입니다. 이런 가상화가 가능한 이유는, 모든 사람이 자원을 항상 이용하려고 하는 것이 아니라 가끔씩은 다른 일도 하기 때문에 가능한 것이죠. 즉, 기존에 사용하던 사람이 사용하지 않을 때에 얼른 다른 사람이 와서 자원을 사..
[운영체제] 운영체제 소개와 기본 개념 (2) 지난 글에 이어서 운영체제의 기본적인 개념들을 간단하게 소개하겠습니다 :) 동시성 문제 해결 OS는 여러가지의 일을 한 번에 juggling하게 됩니다. 따라서 공통된 자원에 대해서 동시에 access를 처리함에 있어서 발생할 수 있는 문제들이 생기게 됩니다. 특히 multi-threaded program들 또한 이러한 동시성 문제를 일으키게 됩니다. 더보기 Thread란, 같은 프로세스 내에서 실행되는 하나의 단위입니다. 차례를 갖고 실행되는 프로세스와 달리, 쓰레드는 한 번에 여러 개가 실행될 수 있어 응답성 측면에서 좋습니다. 그 이유는, 각자의 자원을 갖고 있는 프로세스와는 달리 Thread는 일정 부분의 자원을 공유하게 되는데 만약 하나의 값을 공유하는 쓰레드가 동시에 값을 쓰려고 한다던 가의 ..
[운영체제] 운영체제 소개와 기본 개념 (1) 이번 카테고리에서는 운영체제가 무엇인지, 또 어떤 개념들이 있는지에 대해서 두 차례에 걸쳐 다뤄보고자 합니다. 우선 운영체제에 대해서 자세하게 포스팅을 하기 전에, 운영체제의 기본적인 개념들을 간단하게 소개하고자 합니다. 운영체제를 이해하기 위해서는 프로그램이 동작하는 방식을 알아야합니다. 프로그램의 동작은 다음의 4단계로 간단하게 표현할 수 있습니다. 단계 1. 프로세스가 메모리로부터 instruction을 가져오는 fetch 단계 단계 2. 가져온 instruction이 무엇인지 분석하는 decode 단계 단계 3. 메모리에 접근한다거나, 연산을 수행하거나, 함수로 jump 하는 등 명령어를 수행하는 execute 단계 단계 4. 프로세서가 다음에 수행할 명령어로 이동하는 단계 운영체제는 위와 같은 ..

728x90
반응형