반응형

CS/OS 8

[OS]Threads(스레드)

스레드란 프로세스의 실행 단위라고 할 수 있으며, 한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 주소 공간이나 자원을 공유할 수 있다. 위의 그림과 같이 Code, data, files, registers, stack을 담고 있는 프로세스가 있다고 가정하자. 만약 사용자가 똑같은 프로그램 3개를 실행한다면, 아래의 그림과 같이 3개의 프로세스가 실행될 것이다. 그림을 보면 똑같은 프로그램을 바탕으로 실행한 프로세스임에도 불구하고, code, data, files 부분을 각각 갖고 있다. 이때 자원 낭비를 줄이고자 등장한 개념이 Threads(스레드)이다. code : 실행 중에 바뀌지 않기 때문에 1개만 존재하면 된다. data, files: 프로세스마다 다르기 하지만 자원 공유가 가능하..

CS/OS 2021.05.12

[OS]프로세스 간 통신(Interprocess Communication)

프로세스는 독립적(independet)이거나 협력적(cooperating)일 수도 있다. 프로세스가 협력적인 이유는 아래와 같다. 정보 공유(Information sharing) 계산 가속화(Computation speedup) 모듈성(Modularity) 편의성(Convenience) Cooperating processes는 데이터나 정보를 교환하기 위해 IPC 기법이 필요하다. IPC 기법 (크게 두 가지 있다( Shared memory Message passing Shared memory (공유 메모리) 통신을 하고자하는 두 프로세스가 일정한 메모리 영역을 공유함으로서 데이터를 주고 받는 기법 ex) A가 공유 메모리에 데이터를 쓰고, B가 공유 메모리에 있는 데이터를 읽는다면 데이터 공유가 가능함..

CS/OS 2021.04.30

[OS]프로세스 연산 (Operations on Processes ), 시스템 콜(System Call)

System Call fork( ), exec( ), wait( )와 같은 것들은 Process 생성과 제어를 위한 System call임. fork, exec는 새로운 Process 생성과 관련이 되어 있음 wait는 Process (Parent)가 만든 다른 Process(child)가 끝날 때까지 기다리는 명령어임. 프로세스 생성(Process Creation) 프로세스는 여러 개의 새로운 프로세스들을 생성할 수 있다. 생성한 프로세스를 부모 프로세스(parent process), 새로운 프로세스는 자식 프로세스라고 부른다. 또한 생긴 새로운 프로세스도 다시 프로세스를 생성할 수 있으며, 이러한 과정을 반복하면 프로세스 트리가 생성된다. 각 노드들은 프로세스 식별자(pid)를 사용하여 구분되며, 이..

CS/OS 2021.04.30

[OS]프로세스(Process)란?

프로세스 (Process) 프로세스란 실행 중인 프로그램을 의미한다. (프로그램 그 자체는 프로세스가 아님) 아래 사진은 프로세스가 메모리에 로드되어 있는 모습이다. 0 주소는 프로세스의 시작 위치 주소이고, max 표시는 프로세스의 마지막 주소를 의미한다. Text section : 프로그램의 명령들, 즉 코드들을 의미한다 + 코드가 실행 중이기 때문에 PC와 같은 프로세서 레지스터를 포함 Stack : 함수의 동작과 관련된 내용들이 저장되어 있음 ex) 함수의 복귀주소, 로컬 변수, 함수의 매개변수와 같이 임시적인 자료를 가지는 것들 Data : 전역 변수가 포함되어 있음 Heap : 동적으로 메모리가 할당 되었을 경우 사용됨 ex) C언어의 malloc 화살표 부분 : 프로세스의 영역이긴 하지만, ..

CS/OS 2021.04.29

[OS]멀티프로그래밍(Multiprogramming)

개요 프로세스(process)에 대해 공부하기 전에 먼저 멀티프로그래밍을 공부하는 것이 좋다. Uni-Programming (단일 프로그래밍) 멀티프로그래밍 이전에는 유니프로그래밍 방식으로 컴퓨터가 동작했다. 위의 사진을 보면 Program A가 실행될 때 RUN->Wait->Run->Wait 형태로 프로그램이 동작하기 된다. (이러한 RUN->Wait->Run->Wait 형태는 모든 프로그램에 공통되는 동작이다. CPU연산->입출력을 계속 반복하는 형태) 이때 Wait는 CPU idle 상태라고 하는데, I/O(입출력) 상태 이거나 다른 동작을 하고 있기 때문에 CPU가 일을 하지 않고 있다. 그 당시에는 CPU 연산과 같은 귀중한 자원이 idle 상태에 장기간 유지되는 것이 굉장한 낭비라고 생각되었기..

CS/OS 2021.04.27

[OS]운영체제 구조 (Operating System Structure)

Operating System Structure 운영체제와 같은 크고 복잡한 소프트웨어는 잘 동작하고, 쉽게 변경할 수 있도록 구조를 만드는 것이 매우 중요 운영체제를 구성하는 구조들은 여러 가지가 있다. 모놀로식 커널 (Monolithic kernel) 단일형 커널 cpu스케쥴링, 메모리 관리 등 운영체제의 일반적인 기능들이 전부 커널이라는 하나의 프로그램에 담겨있는 구조 (전혀 계층적이지 않음) 계층적인 구조보다 성능적인 부분에서는 우위를 보이나, 구현과 수정이 어렵다. 장점 : 성능이 더 좋다. 단점 : 수정과 구현이 어려움 (유지보수가 어렵다) 계층적인 접근 (Layered Apporach) 계층적인 구조라면 커널 자체도 여러개의 계층으로 이루어져있어야 함. 전형적인 하나의 계층은 자신의 자료구조..

CS/OS 2021.02.19

[OS]캐싱(Caching) 이란?

캐싱의 정의 저속의 저장장치에 저장되어있는 데이터에 대해 그 일부의 복사본을 그보다 빠른 저장장치에 보관에서 컴퓨터 동작의 성능을 향상하는 기법 (copying information into faster storage system; main memory can be viewed as a cache for secondary storage) (메모리 계층간의 캐싱 가능) 컴퓨터 시스템의 여러 부분에서 동작하는 성능 향상 기법 주어진 하드웨어에서 최대한 빨리 데이터에 접근(캐싱의 목적) 캐싱의 원리 저속 저장장치에 담긴 원본 데이터를 고속 저장장치에 임시로 복사해놓는다. 이렇게 되면 CPU는 같은 데이터를 고속 저장장치에서 데이터를 가져와서 성능을 향상 시킬 수 있다. 단, 고속 저장장치는 저속 저장장치보다 ..

CS/OS 2021.02.15

운영체제 (OS)(Operating System) 란?

OS 정의 (Operating System Definition) OS is a resource allocator 시스템 관점에서 OS는 자원할당자라고 볼 수 있다. (Manages all resoures) 제한된 자원에 대해 동시에 요청이 들어오면 효율적으로 분배해주는 역할을 한다. (Decides between conflicting requests for efficient and fair resource use) 자원 할당은 매우 중요한 이슈이다. OS is a control program 프로그램의 동작을 통제하는 제어프로그램이라고 할 수 있다.(Controls execution of programs to prevent errors and improper use of the computer) 프로그램..

CS/OS 2021.02.12
반응형