TIL💡/OS(6)
-
[OS] 프로세스의 생성과 복사
프로세스는 프로그램을 실행할 때 새로 생성된다. 사용자가 프로그램을 실행하면 운영체제는 프로그램을 메모리로 가져와 코드 영역에 넣고 프로세스 제어 블록을 생성한다. 그리고 메모리에 데이터 영역과 스택 영역을 확보한 후 프로세스를 실행한다. 프로세스를 새로 생성하는 방법뿐만 아니라 실행 중인 프로세스로부터 새로운 프로세스를 복사하는 방법도 있다. fork() 시스템 호출의 개념 fork() 시스템 호출은 실행 중인 프로세스로부터 새로운 프로세스를 복사하는 함수이다. 커널에서 제공하는 이 함수는 프로세스를 복사하는 일종의 시스템 호출이다. 컴퓨터를 사용하다보면 fork() 시스템 호출을 자주 접하게 된다. 예를 들어 워드프로세서 프로그램으로 문서 작업을 하다가 새로운 워드프로세서 프로그램을 하나 더 실행하면..
2022.10.11 -
[OS] 프로세스의 구조
코드 영역 코드 영역은 프로그램의 본문이 기술된 곳으로 텍스트 영역이라고 한다. 데이터 영역 데이터 영역은 코드가 실행되면서 사용하는 변수나 파일 등의 각종 데이터를 모아놓은 곳이다. 스택 영역 스택 영역은 운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 모아놓은 곳이다. 예를 들어 프로세스 내에 함수를 호출하면(function call) 함수를 수행하고 원래 프로그램으로 되돌아올 위치를 이 영역에 저장한다. https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/ [컴퓨터 기초] 메모리구조(Memory Str..
2022.10.11 -
[OS] DMA(Direct Memory Access)이란?
직접 메모리 접근(DMA, Direct Memory Access)은 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능이다. 과거 운영체제는 폴링 방식을 사용했기 때문에 CPU가 메모리나 주변 장치에 대한 모든 권한을 가지고 있었다. 그러나 효율성을 높이기 위해 인터럽트 방식을 사용하면서 입출력 관리자가 데이터의 입출력을 맡게 되었다. 입출력이 필요할 때 CPU는 입출력 관리자에게 입출력 요청을 보내고 자신은 하던 일을 계속한다. → 효율적 명령을 받은 입출력 관리자는 CPU가 요청한 데이터를 메모리에 가져다놓아야 하는데 이때 문제가 있다. 메모리는 CPU만 접근 권한을 가진 작업 공간이라 입출력 관리자는 접근이 불가하다는 것이다. 따라서 입..
2022.10.10 -
[OS] Interrupt(인터럽트)
- 주변 장치 및 입출력 장치는 CPU나 메모리와 달리 인터럽트(Interrupt)라는 매커니즘을 통해 관리 - 주변 장치들을 CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청한다. 이 때 발생시키는 신호를 인터럽트라 한다. - CPU는 평소에 CPU 스케줄링에 따라 자신에게 주어진 작업을 수행하고 있다가 인터럽트가 발생하면 하던 일을 잠시 멈추고 인터럽트에 의한 요청 서비스를 수행한다. - 인터럽트는 요청하는 장치와 발생 상황에 따라 다양한 종류가 있기 때문에 OS는 인터럽트 종류마다 서로 다른 인터럽트 처리 루틴을 갖는다. 인터럽트 처리 루틴이란 인터럽트가 발생했을 때 해주어야 할 작업을 정의한 프로그램 코드를 말한다. 이는 OS 커널 내에 존재하는 코드로, CPU 스케줄링, 메모리 관리..
2022.09.30 -
Page Table의 작동 순서
배경 기존에는 모든 프로세스를 메모리에 로드하고, 메모리 용량보다 더 큰 프로그램을 실행시킬 수 없었다. 하지만 실제로는 코드의 일부에서만 대부분의 시간을 사용하고, 프로세스는 특정 순간에는 항상 작은 양의 주소 공간을 사용했기 때문에 이러한 방식은 매우 비효율적이었다. 가상 메모리는 이러한 물리적 메모리 크기의 한계를 극복하기 위해 나온 기술이다. 프로세스를 실행할 때 실행에 필요한 일부만 메모리에 로드하고 나머지는 디스크에 두는 것이다. 이를 통해 프로세스 전체가 물리적 메모리에 있는 것'처럼' 수행되는, 즉 물리적 메모리가 훨씬 많이 있는 것처럼보이게 된다. 결과적으로 메모리에 작은 양의 주소 공간만 있으면 충분히 프로세스를 수행할 수 있고, 그에 따라 더 많은 프로그램을 동시에 실행할 수 있게 된..
2022.09.30 -
API와 SDK
시스템 호출과 유사한 용어로 API(Application Programming Interface, 응용 프로그램 인터페이스)와 SDK(System Developer's Kit, 시스템 개발자용 키트)가 있다. API 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스 포토샵은 필터를 개발하려는 사람들을 위해 다양한 프로그래밍 인터페이스를 제공 API는 시스템 호출보다 광범위한 개념이며, 운영체제의 API를 시스템 호출이라고 정의할 수 있다. SDK 프로그램 개발자를 위해 API 및 API 사용 매뉴얼 뿐만 아니라 프로그램 개발에 필요한 코드 편집기와 에뮬레이터 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 툴을 말한다. 한 마디로 개발자를 위한 종합 선물 세트라..
2022.05.31