728x90
반응형

운영체제 44

CPU Scheduling 스케줄링, 기본 개념 [운영체제]

CPU 스케줄링은 다중 프로그램 운영체제의 기본이 된다. 정말 중요하고, 앞으로도 중요하고 언제나 중요할 것이다. 가보자 프로세스를 전 글에서 소개한 적이 있는데 운영체제는 실질적으로는 프로세스가 아니라 커널 수준의 스레드를 스케줄하는 것이다. 프로세스 스케줄링과 스레드 스케줄링은 구분이 거의 무의미하게 되었다. 그렇지만 배울 때는 따로 언급할 것이니 참고하고 가자 진짜 기본부터 가자 코어가 하나인 시스템에서는 한 순간에 하나의 프로세스만 실행가능하다고 했다. 나머지 프로세스는 대기한다고 말했다. 그런데 우리는 다중 프로그래밍을 활용해 CPU의 이용률을 높이려고 시도한다고 했다. 다시 말하자면 CPU의 사용을 항상 바쁘게 하는 개념은 시스템의 모든 처리 코어로 확장된다. **스케줄링은 운영체제의 기본적인..

프로세스 간 통신, Interprocess Commnunication/IPC

통신이란게 별 거 없다. 그냥 뭔가 주고 받는 것을 통신이라고 한다. 프로세스끼리 뭔가 주고 받는 갑다 하고 보자 • Processes within a system may be independent or cooperating • Independent process cannot affect or be affected by the execution of another process • Cooperating process can affect or be affected by the execution of another process • Cooperating process can affect or be affected by other processes, including sharing data • Reasons ..

스레드 라이브러리?? Thread library

라이브러리 도서관 아니고 아 근데 라이브러리 도서관처럼 책이 모여있다고 하면 뭐 비슷할 수도 있겠다. 스레드 라이브러리라는 것은 프로그래머에게 스레드를 생성하고 관리하기 위한 API를 제공하는 것이다. 첫 번째 방법은 커널의 지원 없이 완전히 사용자 공간에서만 라이브러리를 제공하는 것이다. 라이브러리를 위한 모든 코드와 자료구조는 사용자 공간에 존재한다. 그렇게 되면 라이브러리의 함수를 호출하는 것은 시스템 콜이 아니라 사용자 공간의 지역 함수를 호출하게 된다는 것이다. 두 번째 방법은 운영체제에 의해 지원되는 커널 수준의 라이브러리를 구현하는 것이다. 이 경우에는 라이브러리를 위한 코드와 자료구조는 커널 공간에 존재한다. 그렇게 되면 라이브러리 API를 호출하는 것은 커널 시스템 콜을 하는 것과 같아진..

다중 스레드 모델, Multithreading Models

이제 진짜 다중 스레드에 대해서 알아보려고 한다. 그래서 스레드도 2개의 종류로 나눠서 살펴보려고 한다. 한 번 보자 • User threads - management done by user-level threads library • Three primary thread libraries: POSIX Pthreads Windows threads Java threads • Kernel threads - Supported by the Kernel Examples – virtually all general purpose operating systems, including: Windows Solaris Linux Tru64 UNIX Mac OS X 사용자 스레드(User threads) , 커널 스레드(Kern..

다중 코어 프로그래밍 (Multicore programming)

영어도 보다보면 익숙해진다 보고가자 • Types of parallelism Data parallelism – distributes subsets of the same data across multiple cores, same operation on each Task parallelism – distributing threads across cores, each thread performing unique operation • As # of threads grows, so does architectural support for threading CPUs have cores as well as hardware threads Consider Oracle SPARC T4 with 8 cores, and 8 h..

스레드,Thread [운영체제]

스레드를 프로세스에 대해 공부하다보면 알게 되는데,, 그리고 뭐 맨날 컴퓨터 성능보면 8코어 16스레드뭐시기 하는데 뭘까 싶기도 하고 그래서 알아보자 우선 스레드는 CPU 이용의 기본 단위다. 다시 더 나누면 스레드는 스레드 ID, 프로그램 카운터, 레지스터 집합, 그리고 스택으로 나눠진다. 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션 그리고 열린 파일이나 신호화 같은 운영체제 자원들을 공유한다. 단일 스레드가 기본이지만 당연히 다중 스레드도 있다. 차례대로 알아보자 ** 그냥 프로세스 여러개 돌리면 되는거 아냐??? 라고 할 수 있기도 하지만.. 1. 멀티 프로세스 -> 멀티 스레드로 실행할 경우 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리가능 2..

Process Life Cycle, 프로세스 생성부터 종료까지

프로세스에 대해 살짝 알아봤는데 그럼 0부터 1이 어떻게 되느냐?? 아니면 원래부터 프로세스가 있어서 프로세스가 프로세스를 만드는거냐?? 의문이 들텐데 한 번 알아보자 우선 대부분 시스템 내의 프로세스들은 병렬 실행이 가능하다. parallel적으로 실행 가능하다. 반드시 동적으로 생성되고, 제거되어야 한다. 그래서 운영체제는 프로세스 생성 및 종료를 위한 기법을 제공한다. 알아보자 The system must provide mechanisms for process creation, process termination, and so on as detailed next 프로세스 생성부터 알아보자, process creation 실행되는 동안 프로세스는 여러 개의 새로운 프로세스들을 생성할 수 있다. 그림을..

프로세스 스케줄링(Process scheduling)이란?

뭐 더 자세히 알아봐야겠지만 살짝 맛만보고가자 • Maximize CPU use, quickly switch processes onto CPU for time sharing • Process scheduler selects among available processes for next execution on CPU • Maintains scheduling queues of processes 다중 프로그래밍의 목적은 CPU의 이용을 최대화하려는 데에 있다. 시분할(TIme sharing)의 목적은 각 프로그램이 실행되는 동안 사용자가 상호 작용할 수 있도록 프로세스들 사이에서 CPU 코어를 빈번하게 교체하는 것이다, 이 2가지 목적을 달성하기 위해서 프로세스 스케줄러(process sceheduler)가 ..

프로세스(process)란 무엇인가? [운영체제]

쉽게 말하자면 프로세스란 실행 중인 프로그램을 말한다. 자세히 알아보자 운영체제의 주 목적은 사용자 프로그램을 실행하는 것이지만 커널 안에서 보다 사용자 공간에서 가장 잘 할 수 있는 다양한 시스템 작업을 할 필요가 있다. 그래서 하나의 시스템은 일부는 사용자 코드를 실행하고 나머지는 운영체제 코드를 실행하는 프로세스들의 집합체이다. 우선 그림을 보고가자면 이 그림은 프로세스 메모리 배치의 그림이다. **컴퓨터 구조에서 많이 봤다면 같은 것이다. 다시 말하겠다. 프로세스란 실행 중인 프로그램이다. 프로세스의 현재의 상태는 프로그램 카운터(PC) 값과 나머지 프로세서 레지스터의 내용으로 나타낸다. 1. Text: the executable code 실행 코드가 들어간다. 2. Data: global var..

Multiprogramming vs Multitasking 멀티프로그래밍과 멀티태스킹의 차이

한글로는 다중 프로그래밍, 다중 태스킹이라고도 하는데 사실 용어가 중요한 것이 아니라 개념이 중요한 것이니까 한 번 알아보자 하나의 프로그램으로는 CPU나 I/O 장치를 항상 바쁘게 할 수 없다. -> I/O 유휴상태가 발생한다 다시 말해서, 계속 작동하게 할 수 없다는 말이다. ++그래서 사람들이 생각했다. 그럼 사용 안하는 시간에 다른 프로그램도 돌릴 수 있지 않을까?? 그래서 한 번에 둘 이상의 프로그램을 돌리는 것이 바로 다중프로그래밍이다. (Multiprogramming) CPU가 항상 한 개의 프로그램을 돌릴 수 있게 해서 CPU의 이용률을 높인 것이다. ++ 한 프로그램이 이용안 할 때 다른 프로그램이 실행된다는 뜻이다. ** 우리는 Multiprogramming에서 실행중인 프로그램을 프로..

728x90
반응형