공부/OS(9)
-
[OS] 운영체제 system call
운영체제란 하드웨어를 제어하고 다양한 하드웨어, 소프트웨어 리소스들을 효율적으로 관리한다. 즉 사용자는 운영체제를 통해 시스템을 편리하게 이용할 수 있다. 사용자가 실행 시킨 응용 프로그램은 운영 체제를 통해 하드웨어에 간접적으로 접근할 수 있다. 많이 사용하는 운영체제의 종류에는 Windows, MacOS, ubuntu 등이 있다. 운영체제는 정말 다양한 역할을 하지만 사용자 인터페이스를 통해 사용자와 상호작용 하는 방식과 하드웨어와 상호작용 하는 방식을 알아보자. 사용자 인터페이스인터페이스란 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉 사용자 인터페이스란 사용자와 컴퓨터를 연결해주는 역할을 한다고 볼 수 있다. 그렇다면 사용자가 운영체제에 접근하기..
2024.08.25 -
[OS] 페이징(paging)과 세그먼테이션(segmentation)
프로그램은 실행 전 변수와 같은 기호 주소를 실제 주소로 바인딩 해야한다. 바인딩은 컴파일, 메모리 적재, 실행 시간 등에 바인딩 될 수 있다. 현재는 대부분 실행 시간에 기호 주소를 실제 주소로 바인딩한다. 컴파일, 적재 시간 바인딩과 달리 실행 시간 바인딩은 논리적 주소와 물리적 주소가 다르다. 논리적 주소와 물리적 주소는 서로 매핑되는데 이러한 매핑은 MMU(Memory Managerment Unit)에 의해 이루어진다. 동적 적재 초창기에는 모든 프로그램을 주기억장치에 적재하는 정적 적재(static loading)를 사용했다. 그런데 정적 적재는 메모리의 용량이 부족해질 수 있는 문제가 있다. 이러한 문제는 루틴이 호출될 때 해당 루틴을 주기억장치에 적재하는 동적 적재(dynamic loadin..
2023.06.20 -
[OS] 교착 상태 (deadlock)
시스템에는 유한 개의 자원이 존재하고 프로세스는 이 자원을 사용한다. 자원을 사용하기 위해 프로세스는 자원을 요청하고 사용하고 해제한다. 만약 사용하려는 자원이 이미 다른 프로세스에 의해 사용 중이라면 대기 상태에 들어간다. 그런데 어떤 집합의 모든 프로세스가 자원을 할당받기를 기다리고 있고 각 프로세스가 이 집합의 어떤 프로세스가 소유 중인 자원을 할당받기를 기다리고 있다면 이를 교착 상태(deadlock)에 있다고 한다. 교착 상태는 다음과 같은 4가지 조건을 만족해야 교착 상태라고 한다. 상호배제 : 한 번에 하나의 프로세스만 자원을 사용할 수 있다. 점유와 대기 : 프로세스는 최소한 하나의 자원을 점유하고 있고 다른 프로세스가 점유 중인 자원을 대기 중이다. 비선점 : 점유된 자원은 점유 중인 프..
2023.06.19 -
[OS] CPU scheduling 알고리즘
1. FCFS(First Come First Served) 스케줄링 요청한 순서대로 프로세스에게 cpu를 할당해준다. 비선점 방식이다. 다음과 같이 프로세스들이 요청을 했다고 하자. 다음과 같은 순서대로 실행될 것이다. 이 방식은 수행 시간이 큰 프로세스가 모두 수행되는 동안 다른 프로세스가 기다려야 한다는 단점이 존재한다. 2. SJF(Shortest Job First) 스케줄링 SJF 알고리즘은 cpu 수행 시간이 짧은 프로세스부터 cpu를 할당해주는 방식이다. (수행 시간이 같으면 요청한 순서대로) 비선점 방식이다. 다음과 같이 프로세스의 요청이 동시에 들어왔다고 하자. 수행 시간이 짧은 프로세스부터 실행하기 때문에 아래와 같이 실행될 것이다. 평균 대기 시간이 짧다는 장점이 있다. 3. SRTF(..
2023.06.11 -
[OS] 프로세스 동기화 문제 (세마포어)
프로세스는 공유 메모리를 사용하여 공통된 변수와 버퍼를 공유한다. 그런데 context switching을 통해 현재 cpu를 할당받은 프로세스가 달라지면 공유 메모리에 동시에 접근하는 이슈가 발생할 수 있다. 이를 동기화 이슈라고 한다. 동기화 이슈 예를 들어서 A와 B가 100만원이 들어있는 같은 통장에 10만원씩 예금했다고 해보자. 10만원을 예금하는 코드의 구성은 다음과 같다. 통장의 총 금액을 가져온다. 해당 금액에 10만원을 추가한다. 추가한 금액을 통장에 저장한다. 멀티 프로세스 환경에서는 프로세스를 동시에 실행할 수 없다보니 두 프로세스를 조금씩 번갈아가면서 실행하게 된다. 그런데 다음과 같이 context switching이 발생할 수 있다. (빨간색이 프로세스 A, 초록색이 프로세스 B..
2023.05.27 -
[OS] 쓰레드의 개념과 프로세스와의 차이
https://growth-coder.tistory.com/139 [OS] 프로그램과 프로세스의 차이 및 프로세스 구조 프로그램과 프로세스의 차이 프로그램과 프로세스는 혼동하기 쉬운데 둘은 엄연히 다르다. 프로그램은 특정 목적을 수행하기 위한 명령문들의 집합이다. 또한 컴파일된 결과물이 디스크에 저 growth-coder.tistory.com 이전 포스팅에서 프로세스의 구조에 대해서 알아보았다. 이번 포스팅에서는 프로세스 내부에서 실행되는 쓰레드에 대해서 포스팅 해보려고 한다. 쓰레드는 프로세스와 마찬가지로 cpu의 작업 단위이다. 프로세스 내부에서 실행되는 흐름의 단위라고 보면 된다. 하나의 프로세스 내부에서는 여러 개의 쓰레드가 실행될 수 있고 여러 개의 쓰레드를 가지는 프로세스를 멀티 쓰레드 프로세..
2023.05.25