2025/01 40

절대주소와 상대주소

개요메모리라고 하는것에 대해서 어느 한 단위가 있는데 크기가 1byte가 되는 것이고 이 1byte마다 메모리 주소가 붙는데 이 주소가 64bit 체계이면 64bit system, 32bit체계이면 32bit system이라고 불린다. 근데 이것이 Application 수준에도 적용된다. 절대 주소와 상대 주소 이야기중요한 것은 RAM에는 하드웨어 수준에 부여된 주소체계가 있고 Application Process수준에 부여된 주소체계가 있는데 이 둘이 조금 다르다. 즉 이 둘의 차이가 있다. 이 둘은 가상메모리 체계를 쓰기 때문에 두 영역에서 쓰이는 주소는 일치하지 않는다. 그래서 메모리의 어떤 주소를 애기할때는 2가지 기준으로 간다. 이는 절대주소와 상대주소로 생각해볼 수 있다. 쉽게 생각해서 배열을 ..

운영체제 2025.01.26

메모리 관리 개요

개요 옛날에는 512KB 메모리 양을 가진 8088XT라는 PC가 있었는데 이 PC CPU 쿨럭 성능이 10MHz정도 된다.( 5MHz ~ 16MHz)여기서 상식적으로 알아야 할 내용이 뭐냐면 메모리는 총 2분류로 나눠지는데 RAM이라는 1차메모리가 있고 SSD 혹은 HDD라는 2차메모리가 있다.  여기서 메모리 주소 애기가 나오는데 메모리라고 하는 것에 대해서 어느 공간을 일부 잘라서 그 공간에 일련번호를 붙이는데 그 일련번호를 메모리 주소라고 한다. 또한 이 메모리 주소가 붙은 메모리의 일정한 단위 크기는 1byte이다. 즉, 1byte마다 메모리 주소가 붙는다. 그리고 영문자 한 글자를 저장할 수 있는 기억 공간의 최소단위이며, 컴퓨터는 기억 공간을 관리할 때 1Byte 단위로 관리한다. 위 그림을..

운영체제 2025.01.24

프로세스간 통신

1. IPC(Inter-Process Communication) 개념독립적 메모리 공간운영체제(OS)는 각 프로세스가 서로 다른 가상 메모리 공간(VMS)을 사용하도록 보장합니다.임의로 다른 프로세스 메모리에 접근하면 “해킹”에 해당하고, 정상적인 환경에서는 OS가 이를 방지합니다.왜 IPC가 필요한가?프로세스 간에 데이터를 교환하거나 협업이 필요한 경우, OS가 허용하는 “공식적인 통로”를 사용해야 합니다.2. IPC 수단: 메모리 기반 vs 파일 기반2.1 메모리(RAM) 기반 IPC공유 메모리(Shared Memory):여러 프로세스가 동일한 물리 메모리(페이지)를 서로 다른 가상 주소에 매핑받아 사용하는 방식입니다.예: 리눅스의 shmget() / shmat(), Windows의 “Named Sh..

운영체제 2025.01.13

CPU 스케줄링

1. CPU 스케줄링 개요스케줄링(Scheduling) 이란, 여러 프로세스(그리고 그 내부의 스레드)에게 CPU라는 한정된 자원을 어떻게 분배할지를 결정하는 일련의 정책과 메커니즘을 의미합니다.흔히 식당 비유를 들면,“프로세스” = 식당에 온 “손님 한 그룹”“스레드” = 그 그룹에 속한 “개인”“OS” = 식당의 “매니저(혹은 종업원)”OS가 손님(프로세스/스레드)에게 CPU라는 자원을 적절히 나눠주는 과정을 스케줄링이라고 볼 수 있습니다. 2. 스케줄링의 세 가지 단계(레벨)고수준(장기) 스케줄링 (Level 1)Job 스케줄링이라고도 함.어떤 프로세스(또는 Job)가 시스템에 들어올 수 있는가, 그리고 얼마나 많은 프로세스(= 식당 정원)를 동시에 활성화할 것인지를 결정합니다.시스템 전체 부하(C..

운영체제 2025.01.13

프로세스와 쓰레드

프로세스와 쓰레드 개념프로세스라 함은 OS 관리 단위이고, 프로그램이 RAM 위에 올라가면 이를 프로세스라 부른다. 그리고 프로세스 내부에 연산할 거리가 있는데, 이를 Thread 라 부른다. 이러한 Thread는 프로세스 하나당 최소 하나 이상으로 이루어져, 쓰레드라는 흐름을 형성한다.프로세스를 코드 덩어리로 본다면, 스레드는 그 코드안에 하나의 함수 단위로 생각해보거나, 그 함수안에 코드 한 줄이나 두 줄로 생각해보면 쉬울것이다. 이때, 쓰레드 흐름이 여러 개가 될 수 있고, 이를 멀티 threding이라 부른다.  자원캄퓨터에서 자원은 CPU를 사용하는 경우와 RAM을 사용하는 경우가 있다. 또한 HDD같은 2차 메모리에서도 사용을 한다. 여기서 RAM + HDD를 Virtual Memory형태로 ..

운영체제 2025.01.12

Process의 생성과 복사

프로세스 생성과 복사Win32 API vs  UNIXcreateProcess()fork(), exec()ExitProcess()exit()waitForSingleObject()wait() 가상메모리 애기를 하면 항상 따라다니는 놈이 process다. process단위로 OS가 접근제어를 하는데 파일이나 여러 자원에 대한 접근제어를 의미한다. 어떤 프로세스에 대해 OS가 접근허가를 하면 그 권한을 쓰레드들은 다 공유하게 된다. 그리고 가상메모리라는 공간은 여러 프로세스가 실행되고 있어도 이 가상 메모리 공간은 독립적인 공간으로서 보장을 받는다. 그리고 그 thred들이 가상 메모리를 사용이 가능하다. 우리가 OS내에서 새로운 프로세스를 생성해야 한다고 보면 새로운 프로세스가 생성이 될때마다 독립적인 가상메..

운영체제 2025.01.12

프로세스 휴식, 보류 상태와 문맥

개요 프로세스 상태는 이전 포스트에서 설명한 상태말고도 중요한 상태가 sleep상태와 suspend상태가 있다. sleep상태와 suspend상태는 둘다 보류상태지만 좀 다른 부분이 존재한다.suspend상태는 OS 혹은 다른 프로세스로부터 강제된 상태를 말하는데즉 의도치 않은 요인으로 그 원인이 swap날때 (가상메모리 상태에서 보류상태나 대기상태가 너무 오래될때)혹은 프로그램이 죽을때 발생하고sleep상태는 자발적으로 된 상태로 우리가 코드로 Thread.sleep(10)을 쓴 상태로 볼 수 있다.중요한 것은 Ready-Queue에서 쓰레드가 sleep이나 suspend를 하면 이 대기열에서 이탈을 하는데예를 들어 sleep(10) 함수를 호출하면 10ms만큼만 쉬는게 아니라 + @만큼 더 쉬는데@:..

운영체제 2025.01.12

프로세스의 상태 변화

프로세스와 스레드컴퓨터에서 자원은 CPU를 사용하는 경우와 RAM을 사용하는 경우가 있다. 또한 HDD같은 2차 메모리에서도 사용을 한다. 여기서 RAM + HDD를 Virtual Memory형태로 관리를 한다.프로세스 개념즉, 자원이라고 하면CPU(user mode application process) Virtual Memory이다. 그래서 자원이라고 하는 것을 운영체제마다 다르겠지만 기본적으로 프로세스한테 준다. 윈도우 OS기준으로는 스레드 기준으로 CPU를 준다. 또한 Virtual Memory같은 것도 process단위로 주어진다. 또한 OS입장에서 프로세스를 관리를 해야하는데 그것을 위해 등장하는게 바로 PCB이다. PCB한테 운영체제가 어떤 관리에 필요한 정보를 잔뜩 담아두고 그 정보를 가지고..

운영체제 2025.01.12

CPU 예측이 가져올 수 있는 문제점

https://namu.wiki/w/CPU%20%EA%B2%8C%EC%9D%B4%ED%8A%B8 CPU 게이트대부분의 현대 x86 CPU와 IBM의 POWER CPU , 그리고 ARM 일부 아키텍처에서 몇 가지 중대한namu.wiki I/O 관리자가 CPU의 연산을 보고 미리 예측해서 명령과 데이터를 가져온다. 그런데 여기서 핵심은 '시키지도 않은 일'이라는 것이다. 그래서 심각한 사고가 발생했는데 바로 CPU 게이트 사건이다. 흔히 'Meltdown' 혹은 'Spectre'라는 것이다.예를 들어보자. 해외 순방 중인 대통령을 암살하려는 범죄조직이 있다고 하자. 이 조직은 대통령이 어느 호텔의 A동에 묵는다는 것까지는 알아냈다. 그러나, 몇 호실에 있는지는 알아내지 못했다. 여기서는 A동 202호라고 하..

운영체제 2025.01.12

CPU도 당신처럼 예측하고 미리 움직인다.

개요 CPU는 연산장치다. 연산장치에서 중요한 것은 연산 속도인데 연산속도가 올라갈 수록 연산 양이 늘어나고 처리속도가 올라가 성능이 올라간다.즉, 클럭속도를 올리는 방향으로 CPU가 개발되다가 어느 순간 한계를 맞아 코어 개수를 늘리는 방향으로 개발되어가고 있다 예측을 위한 공간, 캐시 메모리여기서 코어는 CPU의 연산처리를 맡아서 한다. 연산을 처리할 데이터는 RAM에 존재한다. 그레서 RAM의 데이터를 CPU 영역까지 읽고 쓰는 것을 반복한다. 그런데 문제는 CPU안에 레지스터와 RAM의 속도차이가 엄청 커서 그 중간에 완충역할을 하는 애가 있는데 바로 캐시 메모리이다.  캐시 메모리는 종류가 3가지로 나뉘는데 코어마다 붙어있는 L1,L2 캐시메모리가 존재하고 (제조사마다 다름.)CPU에 1개만 존..

운영체제 2025.01.12