반응형

STUDY/운영체제 9

[운영체제] 메인 메모리

프로그램이 실행한다는 뜻은 그 프로세스가 메인 메모리에 올라가 있다는 뜻과 같다. 따라서 메인메모리란, CPU가 직접 접근 가능한 저장 장치이다. 프로세스들은 독립적인 메모리 공간을 갖는다. 각 프로세스는 베이스 레지스터와 리밋 레지스터로 자기만의 영역을 설정하여 메모리를 보호한다. 메모리 공간 보호는 하드웨어로 부터 수행되며 사용자 모드에서 생성된 모든 주소를 레지스터와 비교하는 방식이다. 그 flow는 아래와 같다. 주소할당 프로그램이 실행되기 위해서는 메모리에 올라가야한다. 프로세스가 종료되면 이전 프로세스가 사용 했던 기억 공간이 가용 고간이 되며 다른 프로세스를 위해 사용 된다. 프로그램은 binary file로 저장되어 있으며 프로그램이 메모리에 어떻게 올라가는지는 아래와 같다. compile..

STUDY/운영체제 2022.02.21

[운영체제] 데드락(Dead lock)

데드락(교착상태)이란, wait 상태인 thread 혹은 프로세스가 다시 자기 상태를 바꾸지 못하는 상태를 뜻한다. 즉 대기만 무한히 하는 상태를 말한다. 데드락의 충족 조건은 4가지이다. Mutual Exclusion (상호 배제) 자원은 한 번에 한 프로세스만 사용할 수 있어야 한다. Hold and wait (점유 & 대기) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해서는 대기상태인 프로세스가 있다. No preemption (비선점) 다른 프로세스에 할당 된 자원은 강제로 빼앗을 수 없다. Circular wait (순환 대기) 프로세스의 집합이 순환하며 점유 & 대기를 하야한다. 그러면 데드락을 어떻게 핸들링 해야할까? ignore ..

STUDY/운영체제 2022.02.13

[운영체제] 프로세스 동기화

Cooperating processes는 서로 다른 프로세스간에 데이터를 공유하는 등 서로에게 영향이 있기마련이다. 프로세스들이 동시에 shared data에 접근하게 될 때는 데이터가 깨지는 현상도 생길 수 있다. 그래서 cooperation processes 간에 순서를 보장 하는 등 데이터를 잘 보존할 수 있는 체계(?)가 필요하다. 순서를 보장하는 것이 동기화이다. 즉 프로세스 동기화는 프로세스들이 공유하는 자원의 일관성을 유지하는 것이다. 두 개의 프로세스가 shared data에 동시에 접근하게 되었을 때 문제가 발생할 수 있다. 로우 레벨로 접근해보면 두개의 프로세스가 공통 변수에 접근했을 떄 아래와 같이 접근할 수 잇다. [프로세스 1] register_1 = count (공통 변수를 co..

STUDY/운영체제 2022.02.06

[운영체제] CPU 스케줄링

CPU 스케줄링의 목표는 CPU 효용 극대화하기 위해서이다. 프로세스가 실행 될 때 CPU를 사용하는 시간과 I/O에 대한 응답을 기다리는 시간이 번갈아가면서 진행된다. 이 때, CPU를 사용하는 시간을 CPU burst, I/O 응답을 기다리는 시간을 I/Oburst라고 한다. 통상적인 프로세스는 CPUburst가 짧고 빈도수가 높다. 따라서 하나의 프로세스가 실행 될 때 CPU는 거의 놀고 먹으면서 실행 된다. 그래서 여러 프로세스를 실행할 때, CPU 스케줄링을 하면 CPU 효율을 극대화 할 수 있다. 그러면 CPU스케줄링은 언제 일어나는가? 아래와 같이 프로세스 상태가 변했을 때 이뤄진다. running 상태 👉 waiting 상태 running 상태 👉 ready 상태 waiting 상태 👉 r..

STUDY/운영체제 2022.01.17

[운영체제] 쓰레드 (thread)

Thread란, 프로세스 내에서 실행되는 단위이다. 프로세스에는 스레드가 한개 이상 존재하는데 2개 이상일 경우에 이를 멀티쓰레드라고 한다. - 쓰레드와 프로세스의 차이 프로세스는"실행 중인 프로그램 단위" 라고 정의할 수 있고 프로세스가 쓰레드보다 더 큰 범위의 개념임을 알 수 있다. 멀티 프로세스는 서로 각각의 메모리 주소를 갖게 되고 멀티 쓰레드는 한 프로그램 내에 다수의 쓰레드를 갖는 형태이므로 서로 같은 메모리 주소를 갖는다. 따라서 쓰레드는 프로그램 내 코드, 전역 데이터, 힙 영역을 공유한다. => 프로세스보다는 쓰레드가 더 경제적이다. 프로세스 갯수를 늘리는 것 보다 쓰레드 갯수를 늘리는 것이 좋다. - 쓰레드 제어 블록 (TCB) 생성 된 여러 쓰레드의 정보를 저장하는 곳이 쓰레드 제어 ..

STUDY/운영체제 2022.01.10

[운영체제] 프로세스 간의 통신 (IPC)

다수의 프로세스가 실행되는 방식은 2가지이다. - concurrent방식: 프로세스간에 서로 독립적으로 실행되어 메모리의 간섭이 없고 CPU 스케줄링에 따라 실행되므로 서로 영향을 미치지 않는 선에서 실행된다. 즉, 서로 독립적으로 실행돼, 공유하는 것이 없다. - cooperation 방식: 부모 프로세스와 자식 프로세스간의 커뮤니케이션이 있는 방식이다. 이러한 방식은 커뮤니캐이션 부분 때문에 오류가 생긴다. 이러한 문제를 IPC를 통해 해결할 수 있다. IPC란, 프로세스 간의 통신을 뜻한다. IPC는 데이터를 공유하는 방식이 2가지 있다. shared memory와 message passing이다. - shared memory 프로세스는 자신만의 메모리 영역을 가지고 있다. 이 메모리 영역은 다른 ..

STUDY/운영체제 2021.12.29

[운영체제] 프로세스

프로세스 프로세스는 간략하게 말해서 실행 중인 프로그램이다. 운영체제는 프로그램을 실행하게 하는데 이 작업을 하는 단위가 프로세스이다. 운영체제가 프로세스를 실행할 때에는 자원이 필요하다. CPU time memory files (for 리소스) IO 디바이스(for 리소스) 컴퓨터는 위의 그림과 같이 구성되어 있다. 통상적으로 우리가 프로그램을 작성하면 그건 하드디스트 스토리지(또는 SSD)에 저장된다. 스토리지에 있는 프로그램은 직접적으로 CPU에 할당하지 못하고 Memory에 올리고 할당해야한다. 그리고 CPU는 Memory에 있는 프로그램을 fetch&excute를 하게 된다. 이때 메모리에 올라가있는 프로그램을 프로세스라고 한다. 메모리 레이아웃 프로세스가 올라가는 메모리 영역은 여러 계층으로 ..

STUDY/운영체제 2021.10.18

[운영체제] 컴퓨터 시스템 구조

컴퓨터 시스템(Computer System) 컴퓨터 시스템은 간략하게 1개 이상의 CPU와 여러 장치들 그리고 CPU와 장치들의 중간역할인 bus로 구성되어 있다. 컴퓨터에 전원을 키면 ROM을 통해 OS를 확인하여 메인 메모리에 OS를 올린다. 이때 모든 OS코드가 올라가지 않고 시스템이 돌아가기 위한 부분만 먼저 올리는데 이 부분을 커널이라고 한다. 모든 코드를 올리지 않는 이유는 메모리 자원 낭비때문이다. 그리고 CPU는 메모리의 OS프로그램들을 읽어 OS를 실행한다. 부팅 후 시작되는 다른 프로그램들이 실행되면 메인 메모리에 올라가게 된다. 프로그램들은 I/O디바이스 사용이 필요할 수 있는데 이러한 요청은 운영체제한테 요청해야한다. 이러한 요청을 시스템 콜이라고 한다. 구조 CPU CPU는 3가지..

STUDY/운영체제 2021.10.12

[운영체제] 운영체제란?

운영체제(Operation System) 컴퓨터의 하드웨어를 제어하는 소프트웨어이다. 운영체제가 하는 일은 유저와 컴퓨터간의 중간역할을 한다. 위의 그림과 같이 유저는 응용프로그램을 제어하고 직접적으로 하드웨어를 제어하지 못한다. 어플리케이션과 하드웨어 사이에 운영체제가 중간 다리 역할하며 CPU, 기억장치, IO 컨트롤러 등 컴퓨터 시스템 자원을 효율적으로 관리한다. OS Services 운영체제는 프로그램을 실행을 위해 아리애 같은 서비스를 제공합니다 User interface (GUI, CLI, Touch screen interface 등) Program execution I/O operation File-system manipulation Communications Error detection R..

STUDY/운영체제 2021.10.11
반응형