CS/OS 23

[OS] 가상메모리(Virtual Memory)란?

가상메모리에 대해서 알아보기 전에, 우선 CPU부터 간략히 알아보자. 32bit CPU, 64bit CPU라는 말을 많이 들어보았을 것이다. 여기서 32bit와 64bit는 무엇일까? 바로. CPU가 접근할 수 있는 메모리(RAM) 주소범위이다. 1bit가 0 과 1 , 2가지 경우를 표현하므로 32bit는 232가지 경우를 표현할 수 있다. 1GB는 230 가지 경우를 표현하므로, 232 = 22 x 230 = 4GB 정리하면, 32bit CPU는 4GB 메모리에 접근 가능하고 64bit CPU는 264 = 232 x 232 = 4GB X 4GB = 16GB 메모리에 접근가능하다. 그럼 이제 32bit CPU를 예로 들어 가상메모리 기법에 대해서 알아보자. ( 64bit도 원리는 동일하다. ) 가상메모..

CS/OS 2024.01.25

[OS] 비동기(Async)와 동기(Sync)

비동기(Async)와 동기(Sync) 비동기(Async)란 지금 당장 호출(call)은 해야 하지만 결과는 나중에(back) 받아도 되는 경우에 사용된다. 반대로 동기(Sync)는 지금 요청하고 결과도 받아야 하는 경우 사용한다. 예를들어, 요리에 바쁜 어머니가 아들한테 그릇 세팅하라고 시키는 것은 비동기이다. 그릇은 미리 세팅되어 있으면 좋다. 그래서 어머니 스레드는 아들 스레드에게 그릇세팅 로직을 호출(CALL) 했고 아들은 어머니가 요리하고 있는 사이 그릇 세팅을 완료한 다음 어머니에게 알린다(Back). 요리가 끝난 어머니는 세팅되어 있는 그릇에 음식을 담는다. 동기(Sync)의 경우, 라면을 끓일 때, 스프를 넣고 물이 끓어야 면을 넣는다. 이것은 동기다. 스프를 넣는 로직이 수행되고 물이 10..

CS/OS 2024.01.21

[OS] 멀티 프로세스 vs 멀티 스레드

[OS] 프로세스(Process)란 무엇일까? 개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리 lordofkangs.tistory.com 지난 포스팅에서 Process에 대해서 다루어 보았다. Disk에 있는 Program을 CPU로 처리하려면 RAM에 메모리를 할당해야 한다. 메모리 할당은 Process 단위로 이루어진다. 메모리라는 독립적인 공간이 확보되면 CPU로 처리될 준비가 되었다고 볼 수 있다. 여기서 한 가지 고민해보자. 많은 프로그램이 병렬처리를 한다. 병렬처리를 구현하려면 어떻게 해야할까? 1) 멀티 프로세스 2) 멀티 스레드 ..

CS/OS 2024.01.18

[OS] 프로세스 스케줄링 ( Process Scheduling )

[OS] 프로세스(Process)란 무엇일까? 개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리 lordofkangs.tistory.com [OS] PCB란 무엇일까? https://lordofkangs.tistory.com/614 [OS] 프로세스(Process)란 무엇일까? 개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코 lordofkangs.tistory.com 지난 포스팅에서 프로세스와 PCB에 대해서 다루어 보았다. Disk에 있는 프..

CS/OS 2024.01.17

[OS] PCB란 무엇일까?

https://lordofkangs.tistory.com/614 [OS] 프로세스(Process)란 무엇일까? 개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리 lordofkangs.tistory.com 프로세스(Process)는 CPU가 처리할 수 있도록 RAM 메모리에 할당된 프로그램의 단위이다. 프로세스는 소프트웨어로 다양하다. 그러나 하드웨어인 CPU는 한정되어 있다. 그러므로 프로세스A가 CPU를 점유하고 있으면 스케줄링 정책에 따라 프로세스B로 컨텍스트 스위칭(Context Switching)을 일으켜야 한다. 이렇듯 OS는 CPU 자..

CS/OS 2024.01.15

[OS] 프로세스(Process)란 무엇일까?

개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리어로 변환하고 어셈블러는 어셈블리어를 컴퓨터가 이해할 수 있도록 1과0 변환한 다음 링커가 동작하여 참조하는 라이브러리와 함께 엮으면 실행 가능한 파일(Excutable File)이 만들어 진다. 그리고 실행가능한 파일은 Disk에 저장된다. 이렇게 Disk에 저장된 실행가능한 파일을 두고, 우리는 프로그램(Program)이라 부른다. 그렇다면 프로세스(Process)란 무엇일까? Disk는 크기가 크고 I/O가 느려 CPU와 일할 수 없다. 그래서 CPU와 Disk 사이에는 RAM이 존재한다. D..

CS/OS 2024.01.15

[운영체제] 가상메모리 운영체제 정책

가상메모리 기법에서는 페이지 폴트 발생률을 최소화하여 스래싱(Thrasing)을 줄여야 한다. 페이지 폴트로 발생하는 오버헤드가 너무 크다. 1) 어떤 페이지를 교체할지 정해야 한다. 2) 페이지 입출력 발생 3) 입출력 진행 될 동안 다른 프로세스 스케줄링 및 문맥교환 운영체제는 가상메모리를 운용하기 위한 여러가지 정책을 실시한다. 반입정책(Fetch Policy) 페이지를 언제 주기억장치에 적재할 것인가? 1) 요구페이징(demand paging) : 해당 페이지의 일부가 참조될 때, 지역성의 원리로 미리 페이지를 반입 2) 선페이징(prepaging) : 보조기억장치에 연속적으로 저장되어 있는 페이지를 한꺼번에 반입 ( 유용성 X ) 교체정책(Replacement Policy) 어떤 페이지를 교체할..

CS/OS 2021.11.16

[운영체제] 페이지 크기가 미치는 영향

페이지 크기는 하드웨어 설계의 중요한 요소이다. 페이지 크기가 많은 요소에 영향을 끼친다. 1. 페이지 테이블 크기 2. 프레임 내부 단편화 3. 참조지역성 효과 4. 입출력 시간 효율성 1. 페이지 테이블 크기 지난 포스팅에서 구체적으로 다루어 보았다. [운영체제] 가상메모리와 페이징 기법 [운영체제] 가상메모리 기법 [운영체제] 메모리 분할 ( Memory Partioning ) [ 비연속 메모리 할당 ] [운영체제] 메모리 분할 ( Memory Partioning ) [ 연속 메모리 할당 ] 다수의 프로세스에게 메모리를 분할해 lordofkangs.tistory.com 2. 프레임 내부 단편화 페이지를 크게 나누면 프로세스 블록이 페이지를 모두 채우지 못하는 내부단편화가 발생할 수 있다. 내부단편화..

CS/OS 2021.11.16

[운영체제] TLB ( Translation Lookaside Buffer )

가상 메모리 기법은 메모리 참조시, 논리주소를 동적으로 물리주소로 변환하여 참조한다. 최소 두 번의 참조가 발생한다. 1) 페이지 테이블 참조 2) 실기억장치 참조 두 번의 참조는 두 배의 메모리 접근 시간이 걸리도록 만든다. 이 문제를 해결하기 위해 TLB( Tranlation Lookaside Buffer) 즉, 고속 캐시를 사용한다. TLB TLB는 고속 캐시이다. 즉, 하드웨어다. TLB는 병렬판독회로(하드웨어)가 있어 원하는 페이지를 단번에 찾을 수 있다. 이를 연관사상이라 한다. 굉장히 빠르다. 가장 최근에 참조된 페이지를 TLB에 저장한다. 특정 페이지가 필요 시, 먼저 TLB를 검사한다. 적중(HIT)하면 바로 물리주소로 변환하여 주기억장치에 접근한다. 적중(HIT)하지 않으면 OS는 페이..

CS/OS 2021.11.16

[운영체제] 가상메모리 기법

[운영체제] 메모리 분할 ( Memory Partioning ) [ 비연속 메모리 할당 ] [운영체제] 메모리 분할 ( Memory Partioning ) [ 연속 메모리 할당 ] 다수의 프로세스에게 메모리를 분할해줘야 한다. 이번 포스팅에서는 연속 메모리 할당 방식의 메모리 분할법을 다루겠다. 연속 메 lordofkangs.tistory.com 지난 포스팅에서 프로세스를 주기억장치에 할당하는 방법을 다루었다. 프로세스 전부를 주기억장치에 할당하면 메모리를 효율적으로 사용할 수 없다. 만약 두 가지 조건을 만족하면 필요하지 않은 블록은 보조기억장치로 보낼 수 있다. 가상메모리 기법 운용 조건 1) 프로세스의 메모리 참조는 논리주소로 이루어지고 동적으로 물리주소로 변환된다. 물리주소는 실제 블록이 메모리에..

CS/OS 2021.11.15