OS

백엔드/운영체제

[운영체제] 운영체제(OS) 메모리 관리 - (1) 연속 메모리 할당

가상 메모리 가상 메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 이때 가상적으로 주어진 주소를 가상 주소(logical address)라고 하며, 실제 메모리상에 있는 주소를 물리 주소(physical address)라고 한다. 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다. 물리 메모리를 사용하는 최소 크기 단위를 프레임(frame)이라고 하고 가상 메모리를 사용하는 최소 크기 단위를 페이지(page)라고 한다. 스와핑(Swapping) 만약 가상 메모리에는 존재하지만 실제 메모리인 RA..

백엔드/운영체제

[운영체제] 운영체제(OS), 시스템 콜(System Call)

운영체제(OS) 운영체제는 컴퓨터의 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 운영 체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 제공해 준다. 운영체제의 구조 커널 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차가 운영체제라고 한다면 엔진이 커널에 해당한다. 세단, 스포츠카, SUV 등 자동차의 종류는 다양한 것처럼 운영체제의 종류는 다양하지만 성능을 결정하는 것은 커널이 좌우한다. 컴퓨터와 전원을 켜면 운영체제는 이와 동시에 수행된다. 소프트웨어가 컴퓨터 시스템에서..

백엔드/운영체제

[운영체제] 세마포어(semaphore) 뮤텍스(mutex) 모니터(Monitor)

critical section의 동기화 문제를 해결하기 위해서는 세 가지 조건을 만족해야 한다. mutual exclution (상호 배제) bounded wating (한정된 대기) prograss(진행의 융통성) 2023.04.22 - [백엔드/운영체제] - 경쟁 조건(Race Condition)과 임계 구역(Critical Section) 경쟁 조건(Race Condition)과 임계 구역(Critical Section) 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 임계 구역(Critical Section) 안에서 경쟁 조건(Race Condition)이 생길 수 있다. 이를 해결하 brightstarit.tistory.com critica..

백엔드/운영체제

[운영체제] 경쟁 조건(Race Condition)과 임계 구역(Critical Section)

프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 임계 구역(Critical Section) 안에서 경쟁 조건(Race Condition)이 생길 수 있다. 이를 해결하기 위해 데이터를 한번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 동기화 도구에는 대표적으로 뮤텍스(Mutex)와 세마포어(Semaphore)가 있다. 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할을 한다. 경쟁 조건 (Race Condition) 경쟁 조건(race condition)은 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황을 말하며, 공유 자원 접근 순서에 따라 실행 결과가 달라지는 상..

백엔드/운영체제

[운영체제] 프로세스와 스레드

프로세스(Process) Process is a program in execution 프로세스란 실행 중에 있는 프로그램을 의미한다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 객체)이며 스케줄링의 대상이 되는 작업(task)과 같은 의미로 쓰인다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다. 특징 각 프로세스는 별도의 주소 공간에서 실행되며, 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. Code : 프로그램을 실행시키면 실행파일 내에 존재하는 명령어가 메모리상에 올라가야 프로그램을 동작시킬 수 있다. 이 명령어들을 위해..

밝은별 개발자
'OS' 태그의 글 목록