CS 이론/운영체제 (8) 썸네일형 리스트형 [운영체제 -6] Memory Management 지금까지 운영체제에 대해서 배운 것들은 Interrupt, Process의 작동 방식, Process 관리 및 IPC, CPU 스케줄링, 공유자원 동기화 등에 대해서 배웠다. 첫 포스트에서 잠깐 등장한 Memory 에 대해서 더 자세히 알아보자. 우선 기억을 해야할 것은 프로그램을 execute 하는 순간 Memory 에는 해당 프로세스에 대한 주소 공간 (Address Space)이 할당되고, 이 공간에 프로세스가 필요한 정보 및 지시 사항들을 저장하며 사용한다고 했다. Memory란 무엇이고, 그 안에서 어떤 일이 일어나는 걸까? Memory 일반적으로 운영체제 상 Memory 라고 말하면 주기억장치 (RAM)을 말하고, 이 포스트에서 다룰 내용도 RAM의 동작에 대해서 다룰 것이다. 첫 포스트에서 .. [운영체제 사전 학습] 컴퓨터 시스템 구조, Interrupt 소개와 프로그램 실행 이번 포스트는 본격적으로 운영체제에 대한 내용을 학습하기 전에, 미리 알아야 할 용어, 물리적 측면의 컴퓨터 용어들, 그리고 각각 어떤 역할을 하는지, 그리고 전반적인 운영체제가 작동하는 Overview 이다. (앞으로 배울 내용들을 하나씩 언급하며 한번 훑는다고 생각하면 된다) 해당 포스트 내에 등장하는 Dual-Mode, Interrupt, Sync/Asynchoronus, 프로그램 실행시 Address Space 등에 대해 어느정도 이해가 되어 있는 상태로 운영체제 학습이 진행되는 것이 좋은 것 같다. 사실 내가 정리 + 공부하려고 만드는 포스트들이지만... 이해하기에는 계속 반복하는 방법 밖에 없는 것 같다. (1) 컴퓨터 시스템 구조 (Computer + I/O Device) 컴퓨터의 동작은 크.. [운영체제 -4] Process Synchronization(병행 제어)과 Semaphore 지금까지 Process가 관리되는 모습과, CPU 할당을 위해 OS가 Process들을 어떻게 Scheduling하는지에 대해서 알아봤다. Process 들은 서로 다른 목적을 가지고 수행이 되는 Program들이라는 점을 이해했고, Process들이 자기가 수행되는 OS 공간 내에서 System Call 등을 통한 컴퓨터 자원을 사용한다는 점을 이해했다면, Process Synchronization에 대해서 생각해볼 필요가 있다. 병행 제어는 코드들도 등장하여 생각보다 복잡하고 어려울 수 있는 부분이다. 생각보다 긴 포스트가 되었는데 한번에 이해할 수는 없더라도 여러번 읽어보고 다른 포스트, 다른 강의들도 참고하면서 공부하다보면 금방 이해할 수 있을 것이다. (나부터 더 이해할 수 있도록... ^^) .. [운영체제 -3] OS CPU Scheduling Scheduling은 운영체제 학습 중 가장 중요한 항목 중 하나라고 해도 과언이 아니라고들 한다. OS가 하는 Scheduling이 무엇이고, 어떠한 것들이 있고, 그리고 어떠한 알고리즘을 통해서 수행하는지 확인해보자. 우선 Scheduling의 개요를 살펴보자. 프로세스는 일반적으로 위 그림과 같은 흐름을 가지게 된다. 계속 CPU가 일을 하다가 IO가 등장해서 Waiting으로 가고, 또 CPU가 일을 하다가 IO가 등장해서 Waiting으로 가고 를 반복한다. 물론 어떤 도중이던 Interrupt가 발생해서 CPU를 뺏길 수는 있다. 이렇게 프로세스 내에서 CPU가 일을 하고 있는 시간을 CPU Burst라고 부르고, IO를 기다리고 있는 시간을 IO Burst 라고 부른다 (참고로 IO를 어려워.. [운영체제 -2] Process Management 지난 포스트에서 Process 를 이해하기 위한 State, Context Switch, PCB, Queue, Thread 등 Process 의 개념적인 측면에서 여러가지를 이해해볼 수 있었다. 이번 포스트에서는 이 Process가 운영이 될 때 어떤식으로 관리가 되는지, 어떤식으로 생성이되고 종료가 되고, 일하는 도중에는 무슨 일들이 일어나는지 확인해보자. 참고로 운영체제에서 배우는 Process Management 는 실제에 비해 매우 간소화해서 설명하였다고 이해하면 될 것이고, 이런 느낌으로 일어나는거구나를 이해하면 될 것 같다. 1. 프로세스 생성 운영체제에서 프로세스는 부모를 통해서 생성된다. 즉, 부모가 자식 프로세스를 생성하고, 자식 프로세스가 또 자식프로세스를 생성하는 Tree 구조(계층 .. [운영체제 -1] Process 와 Thread (1) Process 홍성수 교수님 수업 때 말씀하시길, 누가 운영체제 수업 들었구나, 그럼 프로세스가 뭔지 말해봐라? 라고 질문을 한다면 다음과 같이 깔끔하게 답변할 수 있어야 한다고 한다. Process is a Program in execution 실행중인 프로그램을 말한다. 메모리 주소가 형성이 되어 메모리에 올라가 있는 상태가 비로소 execute 된 것이며, 교수님 말씀을 빌리면, program 은 그저 body이고, process 가 life 라고 한다. 그만큼 중요한 개념인 것 같으니 program 과 process, thread의 차이를 확실히 이해하고 가면 좋을 것 같다. ** 참고로 그렇다면 Process와의 차이 측면에서 Program은 어떻게 정의할까? Program은 이미 성취하.. [운영체제] 개요 운영체제 (Operating System) 운영체제란 컴퓨터 계층에서 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드에어를 연결하는 소프트웨어 계층을 말한다. 운영체제는 컴퓨터 상에서 자원들을 효율적으로 관리하고, 일어나는 일들을 관리함에 있어서 매우 중요한 역할을 수행한다. 주로, 운영체제가 하드웨어를 효율적으로 관리하는 점이 매우 중요하다 (CPU, Memory 등: 사실상 이것들을 자원이라고 부르는 것인데, 이미 주어진 상태인 해당 자원들을 효율적으로 사용하고 관리할 수 있어야 한다). 효율성 / 형평성 등을 따지면서 관리한다. ex) 실행중인 프로그램들에게 짧은 시간씩 CPU 를 번갈아 가며 할당 // 실행중인 프로그램들에 메모리 공간을 적절히 분배 협의의 운영체제 (Kerne.. [IPC 체험 -1] 1. 리눅스 환경의 이해 리눅스 - 광범위, 분야 상당히 많음 - 리눅스를 통해서 앱 제작을 배울 예정. (리눅스를 통해서 개발을 할 경우 필요한 내역들을 배울 수 있다) 리눅스의 장점 1. 공개 운영체제, 유닉스와 호환 가능. 2. 강력한 네트워크 기능 제공. 제한된 하드웨어에서도 동작 가능 (Embedded 가능) 3. 사용자가 임의로 재구성 가능 리눅스의 단점 1. 공개 운영체제이므로 문제 발생시 보상 힘들고, 직접 해결해야 한다 (제일 어려운 부분) 2. 버전 변화가 빠름 2. C언어에 대한 빌드 과정 (GNU 툴체인에 들어있음) -> 1. 선행처리 (preprocess) -> #include, #define 처리 (cpp) -> 2. 컴파일 (compile) -> d어셈블리어 파일 생성 (cc1.. 이전 1 다음