오늘도 기록하는 중 GitHub

CS/OS 15

가상 메모리 - 페이징

가상 메모리 관리 기법현대 컴퓨터 시스템이 여러 프로그램(프로세스)을 동시에 매끄럽게 실행할 수 있는 비결은 무엇일까? 그 중심에는 한정된 물리 메모리(RAM)를 수많은 프로세스들이 나눠 쓸 수 있도록 하는 메모리 관리 기술이 있다. 그중에서도 페이징(Paging)은 가장 핵심적인 가상 메모리 관리 기법으로, 메모리 공간을 낭비하는 외부 단편화 문제를 근본적으로 해결하고, 각 프로세스가 마치 자신만의 거대한 메모리를 독차지한 것처럼 느끼게 해주는 안정적인 환경을 제공한다.페이징의 기본 원리: 페이지와 프레임페이징의 핵심 아이디어는 물리 메모리를 조각내어 프로세스에 비연속적으로 할당하는 것이다. 마치 책의 내용을 여러 페이지에 나누어 담고, 이 페이지들을 책장 여기저기에 꽂아두지만 목차를 통해 순서대로 찾..

CS/OS 2025.06.27

동기화

프로세스 동기화프로세스 동기화는 현대 멀티프로세싱 시스템에서 가장 중요한 개념 중 하나다. 여러 프로세스가 동시에 실행되는 환경에서 공유 자원에 대한 안전한 접근을 보장하기 위해 반드시 필요한 기술이다. 동기화는 단순히 프로세스 간의 실행 순서를 제어하는 것을 넘어서, 데이터의 일관성과 시스템의 안정성을 보장하는 핵심적인 역할을 수행한다.동기화란 무엇인가동기화(Synchronization)는 시스템 프로세스 간 정보를 공유하는 행위로 정의할 수 있다. 보다 구체적으로 말하면, 여러 프로세스나 스레드가 공유 자원에 접근할 때 발생할 수 있는 문제를 예방하고 올바른 실행 순서를 보장하는 메커니즘이다. 현대 컴퓨터는 다중 프로그래밍 시스템으로 여러 프로세스가 동시에 실행되며, 이러한 환경에서 동기화는 필수불가..

CS/OS 2025.06.10

프로세스, 그리고 스레드

프로세스와 스레드웹이든 앱이든 관계없이 개발을 해본 사람이라면 스레드에 대해 배우거나 들었을 것이다. 오늘은 CS에 대한 이해를 위해 운영체제에 관련된 내용 중 프로세스와 스레드에 대해 정리하려고 한다. 스레드에 관한 내용은 이전에도 올렸지만 이번에는 총체적으로 담아보려고 한다!아래는 내가 이전에 정리한 스레드 관련 글이다.2024.07.08 - [CS/OS] - 스레드 Thread (1) - 하드웨어와 소프트웨어프로세스?프로세스는 실행 중인 프로그램을 의미한다.응용 프로그램은 보조 기억 장치(하드 디스크, SSD 등)에 저장되어 있다가, 사용자가 해당 프로그램을 실행하는 순간 메모리에 적재되면서 '프로세스'가 된다. 컴퓨터는 수많은 프로세스들을 동시에 생성하고, 사용이 끝나면 메모리에서 삭제함으로써 메..

CS/OS 2025.06.08

커널 Kernel

커널?이 한 달 동안 배웠던 부분은 장기기억으로 넘기고, 부족한 부분은 채우기 위해서 공부하고 있다. 이번엔 운영체제의 중요 요소인 커널에 대해서 기록하려고 한다.운영체제의 핵심 요소커널은 운영체제의 가장 핵심적인 부분으로, 컴퓨터 시스템의 모든 것을 완전히 제어하는 컴퓨터 프로그램이다. 하드웨어와 소프트웨어 구성 요소 간의 상호작용을 관리하고, 항상 메모리(RAM)에 상주하면서 운영체제 코드의 일부분 역할을 한다. 커널은 운영체제를 구성하는 가장 중요한 부분으로, 어떻게 구성하느냐에 따라 컴퓨터 전체의 성능이 달라진다.커널의 메모리 보호커널의 핵심 코드는 응용 소프트웨어나 운영체제의 다른 중요하지 않은 부분들로부터 접근이 차단된 별도의 메모리 영역에 로드된다. 이 영역을 _커널 영역_이라고 부른다. 이..

CS/OS 2025.06.04

운영체제란? 커널, 프로세스, 교착 상태까지

운영체제운영체제는 컴퓨터의 하드웨어와 소프트웨어 자원을 관리하고, 사용자와 컴퓨터 간의 상호작용을 가능하게 하는 핵심 소프트웨어다. 사용자와 하드웨어 간의 인터페이스 역할을 하며, 효율적인 자원 관리를 통해 시스템의 성능을 최적화한다.일반적으로 SSD 또는 HDD에 설치되며, 컴퓨터 부팅과 동시에 메모리에 로드되어 실행된다.프로세스는 실행 중인 프로그램의 인스턴스로, 작업을 수행하는 기본 단위다. 운영체제는 프로세스를 관리하며, 프로세스는 실행 중 여러 상태를 거친다.New (생성) 프로세스가 생성된 상태로, 아직 실행 준비가 완료되지 않았다. Ready (준비) 실행 준비를 마치고 CPU 할당을 기다리는 상태다. Running (실행 중) CPU를 할당받아 명령어를 실행하는 상태다. Wait..

CS/OS 2025.03.14

스레드 Thread (1) - 하드웨어와 소프트웨어

Computer Science 학습 시작 CS에 대한 지식이 완전하다고 생각되지 않아 공부를 시작했고, 해당 내용을 정리해서 올리겠다! 오늘은 스레드 Thread에 대한 내용이다. 다만 후에 더 상세한 내용을 담아 정리하도록 하고 오늘은 스레드의 간단한 개념에 대해서 정리하려고 한다.  스레드 Thread 스레드의 사전적 의미는 실행 흐름의 단위라고 한다. 다만 스레드는 CPU와 프로그래밍에서 사용되는 예가 다르다. 따라서 스레드는 하드웨어적인 의미와 소프트웨어적인 의미가 있다.  하드웨어적 스레드CPU에서 쓰이는 스레드의 의미다. 흔히 우리들은 컴퓨터를 사려고 할 때 몇 코어 몇 스레드라는 CPU에 대한 설명을 듣게 된다. 코어가 '명령어를 실행하는 부품'이라면 스레드는 '하나의 코어가 동시에 처리하는..

CS/OS 2024.07.08

운영체제(9) - 입출력 시스템과 디스크 관리

입출력 모듈 입출력 모듈은 프로세스, 레지스터 등의 내부 저장장치와 물리적 입출력 장치 사이에서 이진 정보를 전송하는 방법을 제공한다. 입출력 모듈이 프로세서를 대신해서 입출력 업무를 수행하면 입출력 채널 또는 입출력 프로세서가 된다. 단순히 입출력 방법만 담당하면 입출력 제어기 또는 장치 제어기가 된다. 기능 입출력 장치 제어 프로세서와의 통신 : 명령해독, 데이터 교환, 상태 보고, 주소 인식 등을 수행. 데이터 버퍼링 : 버퍼링을 통해 속도 조절. 오류검출 입출력 방법 프로세서의 역할에 따라서 입출력 방법이 달라진다. 프로세서 제어 입출력 (프로세스가 전부 관여) DMA 입출력 입출력 채널 프로그램 제어 입출력 프로세서의 내부에 각종 레지스터가 있다는 것을 알고 있다. 프로세스 내부의 입출력 주소 ..

CS/OS 2022.12.07

운영체제(8) - 가상 메모리

가상 메모리 이전 글에서 실제 메모리에 대해 다뤘다. 이는 메모리 관리 방법을 토대로 제공하는 기술이며, 각 프로그램에 실제 메모리 주소가 아니라 '가상 메모리 주소'를 주는 방법이다. 이 가상 메모리는 사용자와 논리적 주소를 물리적으로 분리해서 사용자가 메인 메모리에서 용량을 초과하는 프로세스에 가상 메모리 주소를 지정해서 메모리를 제한 없이 사용할 수 있도록 한다. 프로그램 전체를 동시에 실행하는 것이 아니라 일부만 적재해도 실행 가능하도록 한다. 즉, 보다 큰 프로그램을 적은 메모리에서 처리할 수 있게 해준다. 프로세스의 코드와 데이터는 디스크에 저장하고, 실행영역만 메인 메모리에 유지한 상태로 필요할 때만 스왑 인 앤 아웃 과정을 거쳐 프로세스를 재할당한다. 이는 메인 메모리의 '제한된 용량'과 ..

CS/OS 2022.11.28

운영체제(7) - 페이징, 세그먼테이션, 페이지화된 세그먼테이션

불연속 메모리 할당 페이징 Paging 작업을 메모리관리장치(MMU)에서 작업크기가 동일한 페이지에 할당하여 처리하는 불연속 메모리 할당 방법이다. 빈 프레임에 어떤 페이지든 적재시킬 수 있기에 메모리의 효율적인 사용. 프레임 간의 외부단편화가 발생하지 않는다. 운영체제 선에서는 페이지 관리 부담이 크다. 프로세스의 필요공간이 페이지와 맞지 않으면 내부단편화가 발생할 수 있다. 논리적 주소가 전해지면 페이지 테이블에서 논리적 주소의 페이지번호(p)를 보고 알맞는 페이지를 할당한다. 그리고 실제 메모리의 위치인 프레임(f)의 값을 물리적 주소에 저장하고, 논리적 주소에 있던 오프셋(d)값을 물리적 주소에 넘긴다. 비로소 메모리에 이를 할당하면 된다. 각 테이블 항목마다 논리적 페이지 주소와 프레임번호가 있..

CS/OS 2022.11.21

운영체제(6)

메모리 관리 메모리를 사용할 프로세스들을 위해 메모리를 할당, 제거, 보호하는 활동이다. %여기서 보호란, 프로세스는 적재된 메모리의 영역에서만 다뤄질 수 있으므로 다른 메모리영역으로의 접근을 막는 것이다. 메모리를 관리하는 정책은 다음과 같다. 적재 정책 fetch: 디스크->메모리로 프로세스의 반입시기를 결정하는 것. 요구 적재 : 주체에 따른 참조요청에 따라 다음에 실행할 프로세스를 적재하는 것. 예상 적재 : 시스템의 요청을 미리 예측해서 적재하는 것. 배치 정책 : 적재된 프로세스를 어느 위치의 메모리에 저장할 것인지를 결정하는 것. 저장위치에 따라 효율이 달라진다. 대치 정책 : 메모리가 충분하지 않을 때 적재된 프로세스 중에 제거할 것을 정하는 것이다. 매핑 mapping : 논리적 주소와 ..

CS/OS 2022.11.03
반응형