본문 바로가기

OS5

[OS] 프로세서(processor), 프로그램(program)과 프로세스(process), 스레드(Thread) 개요 이번 포스팅에서 정리할 내용은 아래와 같은 구조를 머릿속에 넣고, 이해하는 것이 좋다. 프로그래밍을 하면서 자주 들었지만, 확실하게 잡지 않으면 헷갈리는 개념. 그러나 너무 중요한 기본 개념을 이번 포스팅을 통해 정리하고 자주 들여다보자! OS 과목을 수강한 컴퓨터공학 관련 학부생이라면 프로세스와 스레드에 대한 개념은 익히 들어왔을 것이다. 여기서 컴퓨터 구조 관련 강의를 같이 들으면 좋은데.. 컴퓨터구조에서는 HW 측면에서 스레드에 대해 다루기 때문이다. 이처럼, 우리가 중요하게 다루는 Thread라는 개념은 SW/HW 측면 두 가지에서 정의할 수 있다. 먼저, HW 측면에서 컴퓨터가 작업을 어떻게 처리하는지, 무엇으로 정의하는지 알아보자. 프로세서(processor) CPU는 컴퓨터 자원을 처리.. 2024. 3. 10.
[OS] 멀티 프로세서, 멀티 태스킹, 멀티 프로세스, 멀티 스레드! 개요 멀티 프로세스(여러 프로세스가 병렬적으로 일하는 것)공부를 하면서 여러 자료를 참고하는데, 이 4개의 용어에 대해 정의하는 바가 다들 달랐다. 여러 자료를 참고하면서 혼선이 왔고, 많이 찾아보고 구글링하며 내린 각각의 차이에 대해 명확하게 정리하는 포스팅이다. 멀티 프로세서(Multi-Processor, Multi-Processing) 단일 시스템 내에서 다중 cpu로 여러 작업을 처리하는 것이다. 하나의 cpu는 하나의 작업만 처리할 수 있다. 그냥 스펙을 쭉쭉 눌려서 여러 cpu를 두고 돈도 빵빵하게 쓰며 성능을 높이는 것이 멀티 프로세서-멀티 프로세싱이다. 장점 독립된 구조로 안정성이 높고, 하나의 프로세스에 문제가 생기더라도 다른 프로세스들에 영향을 주지 않는다. 단점 비용, 전력소모 등등 .. 2024. 3. 10.
[OS] Synchronous, Asynchronous, Blocking, Non-Blocking 개요 Synchronous & Asynchronous | Blocking & Non-Blocking의 개념과 실제로 어떻게 활용하는지, 네 개념의 상관관계는 어떻게되는지 정리하는 포스팅이다. Synchronous Sync 프로세스들은 서로 실행 시점에 따라 순서를 가지고, 순차적으로 실행이 된다. 아래와 같은 Java 예제 코드와 Synchronous한 동작 과정은 다음과 같다. public class Person { private String name; public Person(String name) { this.name = name; } public void introduce() { System.out.println("Hello, my name is " + name + "."); } } public .. 2024. 1. 31.
[OS] user mode & kernel mode 개요 운영체제는 응용 프로그램과 하드웨어 간의 상호작용을 관리하고, 리소스를 효율적으로 활용하기 위한 다양한 작업을 한다. 이 작업에 대한 방식을 두 가지(유저 모드와 커널 모드)로 나누어, 컴퓨터 자원을 안정적으로 보호한다. 이 두 가지 작업 모드에 대해서 알아보자. Kernel이란 커널은 OS의 핵심이되는 프로그램으로, 시스템의 모든 것(하드웨어의 동작, 메모리, CPU 등)을 제어한다. 프로세스 간 통신과 System Call을 이용하여, 하드웨어 리소스에 접근하여 수행되는 응용 프로그램과 데이터 처리 사이의 중간다리 역할을 한다. 커널에는 모든 활성 프로세스를 추적하는 프로세스 테이블이 있어, 이들을 관리한다. 커널은 OS가 로드되면 메모리에 먼저 로드되고, OS가 종료될 때까지 메모리에 남아있다.. 2024. 1. 30.
[OS] CPU Scheduling | preemptive & non-preemptive | 스케줄링 알고리즘 | 스케줄러 알고리즘 평가 스케줄링 개념 앞단원까지 cpu는 hw 자원의 효율적인 사용을 위해 context-switching을 통해 마치 concurrency(동시병렬)한 것처럼 hw 자원들을 사용한다고 배웠다. 이러한 context-switching을 관장하는 것이 CPU scheduling이다. 말 그대로 cpu의 스케쥴을 관리한다. [스케쥴링 전제] 일단 스케쥴러의 판단 하에 있으려면, 프로세스들은 모두 메모리에 load가 되어있는 상태이어야 한다. multi programming 환경이어야 한다. batch programming은 schedule을 나눈다는 가정 자체가 성립 안되니 당연하다. [cpu schedular의 역할] 스케줄러가 ready queue에서 작업을 선택해서 CPU burst하고 나머지는 I/O하면 효.. 2023. 5. 11.