10. Process Scheduling (1)
2020. 4. 29. 16:27
🚦 Server/Operating System
Process Scheduling 프로세스 안에는 Code, Data, Heap, Stack이 있고, Excution state를 담당하는 PC counter, SP가 있다. 프로세스들는 서로 다른 Address space를 가지고 있고 하나의 컴퓨터에서 동시에 돌아갈 수 있다. 하나의 프로세서로 여러개의 프로세스를 돌리고 싶다면? Concurrent하게 해야한다. 이것을 Process Scheduling 이라고 한다. "어떻게 프로세스에게 CPU를 할당할 것인가?" Ready Queue에 있는 프로세스들 가운데 하나에게 CPU를 할당한다. Scheduler 를 통해 프로세스의 context를 바꿔가며 돌게한다. Process Scheduling 의 목적 적은 Processor로 많은 Process를 실..
pthread
2020. 4. 29. 12:05
🚦 Server/Operating System
PTHREAD POSIX Thread(약어 PThread)는 유닉스 계열 시스템에서 일반적으로 사용하는 스레드 관련 표준 API이다. int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); 스레드 생성을 위해서 사용한다. 첫번째 argument인 thread 는 스레드가 성공적으로 생성되었을때 생성된 스레드를 식별하기 위해서 사용되는 스레드 식별자이다. 두번째 argument인 attr 은 스레드 특성을 지정하기 위해서 사용하며, 기본 스레드 특성을 이용하고자 할 경우에 NULL 을 사용한다. 세번째 argument인 start_routine는 분기시켜서 실행할 스..
fork() 와 exec()
2020. 4. 28. 11:35
🚦 Server/Operating System
목차 fork() & exec() fork(), exec()의 차이점 exec() 관련 함수 System Call 에서의 fork, exec fork() 예시 exec() 예시 fork() & exec() fork()와 exec()는 모두 한 프로세스가 다른 프로세스를 실행시키기 위해 사용하게 된다. exec에는 execl, execv등 여러가지 함수군을 가지고 있다. exec의 함수군에 대해서는 아래쪽에서 차이를 간단히 정리하고자 한다. fork(), exec()의 차이점 우선 fork()와 exec()의 차이점에 대해 설명하고자 한다. fork() 시스템 호출은 새로운 프로세스를 위한 메모리를 할당한다는 것이다. 그리고 fork()를 호출한 프로세스를 새로운 공간으로 전부 복사하게 되고, 원래 프로세..
09. Threads (3)
2020. 4. 27. 23:31
🚦 Server/Operating System
Implicit Threading : 쓰레드의 스케줄링을 사용자가 하는 것이 아니라 운영체제 또는 컴파일러에게 맞기는 것이다. Thread Pool 쓰레드를 만들고 제거되는 상황에서, 쓰레드를 만드는 시간이 동작하는 시간보다 오래걸릴 수 있다. 시스템의 동작을 보장하는 최대한의 쓰레드 수에 대한 제한이 필요하다. 쓰레드가 필요하면 Thread Pool 에서 가져오고, 다 쓰면 Thread Pool에 돌려놓는다. 쓰레드를 만들고 없에는 과정을 분리시킬 수 있다. Fork Join : 메인 쓰레드가 task를 수행할때 쓰레드를 fork로 쪼개서 수행하고, task가 끝나면 join으로 재결합해서 가져온다. OpenMP : 공유메모리를 이용한 멀티쓰레딩 프로그램 만들 때 쓰이는 프로그램 Issue in Thr..
08. Threads (2)
2020. 4. 23. 17:23
🚦 Server/Operating System
Pthread (POSIX thread) : 병렬적으로 작동하는 소프트웨어의 작성을 위해서 제공되는 표준 API이다. 즉 쓰레드를 편하게 만들 수 있도록 도와주는 API이다. Multithreading model User thread Kernel 영역 위, User space에서 동작하는 thread User thread가 작동하기 위해서는 Kernel thread와의 매핑이 이루어져야 한다. 즉 User thread는 Kernel thread를 통해서 프로세서를 사용할 수 있다. Kernel thread Kernel 영역에서 동작하는 쓰레드 운영체제가 Kernel 영역에서 쓰레드를 생성 및 관리한다. 운영체제가 스케줄링하는 Thread 단위는 Kernel thread이다. **** CPU 스케줄링에서 ..
07. Threads (1)
2020. 4. 21. 12:48
🚦 Server/Operating System
Thread 하나의 프로세스에는 하나의 control만 존재하기 때문에 프로세스는 한번에 하나의 일만 처리할 수 있다. 그러나 쓰레드를 사용함으로써 Parallelism하게 사용할 수 있다. 프로세스와 마친가지로 스케줄링 단위(Excution Unit)이다. 프로세스보다 더 작은 단위이다. 프로세스로부터 Excution state를 뽑아내서 만든다. 프로세스의 Code 영역, Data 영역, Heap 영역은 thread 간에 공유된다. 하지만 Stack은 쓰레드 각자 따로 있다. 상대 Stack을 읽을 순 있다. 쓰레드끼리는 IPC없이 통신할 수 있다. 같은 Address space를 공유한다. 쓰레드끼리는 같은 메모리를 사용하므로 switch 비용이 적다. Process들은 각자 자기의 Thread를 ..
06. Inter-Process Communication
2020. 4. 14. 11:02
🚦 Server/Operating System
IPC : 프로세스들 간의 데이터 및 정보를 주고 받기 위한 메커니즘 커널에서 IPC를 위한 도구를 제공하며, System call 의 형태로 프로세스에게 제공된다. IPC에는 두가지 모델이 있다. Shared Memory Message Passing Shared Memory : 운영체제야 단톡방 파줘! 두개 이상의 프로세스들이 주소 공간의 일부를 공유하며, Read, Wirte를 통해 통신을 수행한다. Shared Memory가 설정되면 커널의 관여없이 진행된다. 장점 : 운영체제의 관여없이, 커널의 관여없이 메모리를 직접 사용하여 속도가 빠르다. 단점 : 여러 프로세스가 사용하므로 구현이 어렵고 관리가 힘들다. (부록) IPC를 많이한다고 context switching이 많이 일어나진 않는다. (부..
05. Processes
2020. 4. 6. 18:09
🚦 Server/Operating System
프로세스 : 프로그램을 실행하면 객체화, 실체화되는 것 프로그램 : .exe 파일로 존재하며, 해당하는 클래스를 malloc을 통해 만들어진 것이 프로세스이다. 프로그램을 깔면 디스크로 간다. 프로그램을 실행시키면 인스턴스화 되어서 로딩이 되면 메모리를 차지한다. (프로그램은 메모리를 잡아먹지 않는다) 같은 프로그램을 여러번 시키면 별도의 프로세스가 작동한다. 섹션이 같을지라도 Data, Heap, Stack은 다를 수 있다. 프로세스의 구성 (4가지 Address Space) Program Counter Data Section : containing global variable Code Data Stack : containg temporary data Heap : containg memory dynam..
04. Operating System Structures (2)
2020. 3. 30. 16:23
🚦 Server/Operating System
운영체제 종류 MS-DOS : Single structure UNIX : Monolithic Layered Approach : Abstraction based Mach : Micro Kernel MS-DOS : Single structure System이 켜지면 Command Interpreter인 Shell 이 켜진다. user mode, kernel mode가 없다. application program이 kernel에 직접 접근이 가능하다. Layered Approach : OS 복잡도를 낮추기 위한 방안 자기 바로 위 아래 레이어들만 interaction 할 수 있다. 제일 바깥쪽 = Layer N = User interface 제일 안쪽 = Layer 0 = Hardware 장점 : Layer의 ..
03. Operating System Structures (1)
2020. 3. 25. 14:52
🚦 Server/Operating System
★★★★★★★ Basic Input Output System 전원이 켜지면 CPU는 부트스트랩 프로그램인 Basic Input Output System 을 실행한다. Boot Strap Program이 실행이 되면 시스템을 초기화한다. BIOS에 시스템 주변 장치들을 초기화하는 코드가 들어있다. 초기화가 끝나면 운영체제가 로딩한다. 운영체제는 Boot Loader를 통해 로딩한다. 운영체제 디자인 Policy : 뭐가 수행되어야 되냐? Mechanism : 어떻게 수행할까? Mechanism을 잘 구현해 놓으면 다양한 Policy를 설정할 수 있다. Policy에 맞는 Mechanism을 사용하면 된다. CPU scheduler Policy (what) 스케줄링 알고리즘 (FIFO, SJF 등) Quan..
02. System Call
2020. 3. 23. 16:06
🚦 Server/Operating System
Quiz CPU operates in ( ) and ( ). ( ) allows to distinguish on which mode system is running. Some ( ) are only excutable in the kernel mode. May generate an ( ) if and application tries to run a privileged instruction in user mode. Exception : ( )= expected, intended ( ) = unexpected ( ) : Programming interface to the services provided by the OS. Mostly accessed by programs via a high-level ( ) ..
Programming Assignment 0
2020. 3. 18. 12:00
🚦 Server/Operating System
파일 이름 pa0.c로 해라 리눅스에서 되는거만 인정 pdf 한장으로 제출. 이름 학번 넣을 필요 X ICT332 Operating Systems (Spring 2020) Project #0: Implementing a Command Line Parser Due on the end of March 29 (Sunday) (23:59:59) Introduction The purpose of this project is to bootstrap the term project to implement a shell program, and to get familiar with the programming assignment submission system. 이 프로젝트의 목적은 셸 프로그램을 구현하기 위한 용어 프로..
01. Introduction to OS
2020. 3. 18. 11:35
🚦 Server/Operating System
Quiz The operating system ( ) the system and ( ) applications. ( ) : Stored-program computer model ( ) : Each processor is assigned a specific task. ( ) : Each processor performs all tasks Each ( ) is in charge of a particular device type. Each device controller has a ( ). CPU and DC move data from/to main memory to/from ( ). Device controller notifies CPU of events by generating an ( ). ( ) = A..
00. Welcome aboard ICT332
2020. 3. 16. 22:30
🚦 Server/Operating System
운영체제란 과목은 프로그래밍 실력을 요구하는 과목이다. 이 과목을 들으려면 C언어를 할 줄 알아야 한다. 출석 10 과제 20 중간 30 기말 40 결석 2번 가능 virtual 까지만 나갈 것 공부한만큼 받아가라