목록Computer (235)
Machineboy空

운영체제는 프로세스의 상태를 PCB(Process Control Block)에 기록해서 관리한다. 모든 운영체제는 아니지만 대부분의 운영체제는 이런 프로세스의 상태를 계층적으로 관리한다. 프로세스 상태 (Process State) *프로세스 상태는 운영체제마다 조금씩 차이가 있다. 생성 상태 보조기억장치에 있던 데이터 덩어리가, 이제 막 메모리에 적재되어 PCB를 할당,발급받은 상태 *프로세스가 종료되면 PCB를 종료함 준비가 완료되었다면 준비 상태로 준비 상태 (Ready State) 당장이라도 CPU를 할당 받아 실행할 수 있지만, 자신의 차례가 아니기에 기다리는 상태 자신의 차례가 된다면 준비 상태에서 실행 상태로 접어드는 것 = 디스패치 (dispatch) 실행 상태 (Running State) ..

프로세스란? 프로그램은 실행되기 전까지 데이터 덩어리로서 보조기억장치에 저장되어 있다가 실행해서 메모리에 적재되는 순간 프로세스(process)가 된다. 이 과정을 프로세스를 생성한다고 말하기도 한다. 프로세스(process)의 종류 포그라운드 프로세스 (foreground process) 백그라운드 프로세스(background process) 사용자가 볼 수 있는 공간에서 실행되는 프로세스 사용자가 볼 수 없는 공간에서 실행되는 프로세스 메모장, 게임 등 사용자와 직접 상호작용이 가능한 백그라운드 프로세스 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스 데몬(daemon), 서비스(service) CPU가 프로세스를 어떻게 관리하는지 프로세스 제어 블록 모든 프로세스는 실행을 위해 CPU..

그동안 Window 기반으로 Visual Studio를 사용하다가 Mac으로 바꾸고 VS Code로 개발 환경 세팅하느라 애를 먹었다. * IDE(Integrated Development and Learning Environment, 통합개발환경) 인텔리센스 등을 활용해 자동완성을 시키기도 하고 텍스트 에디터, 컴파일러, 테스트, 디버거까지 전반적 개발을 진행할 수 있는 소프트웨어 프로그램. Microsoft의 visual studio, vs code Apple의 Xcode, JetBrain의 IntelliJ 등 다양한 IDE가 존재하고 개발 특성에 맞는 IDE를 사용하면 된다. (IDE까진 아니지만 텍스트 에디터 Sublime Text 등) * VM(Virtual Machine) c#을 실행하기 위해서..

필수 개념 1) 커널이란? 2) 운영체제의 서비스 종류? 3) 시스템 콜과 이중 모드란? 운영체제는 현존하는 프로그램 중 가장 규모가 큰 프로그램 중 하나! 규모만 클 뿐 아니라 종류도 다양해서 제공하는 기능이 다양하다. but 가장 핵심적인 서비스는 존재한다. *같은 스마트폰이라도 아이폰과 갤럭시의 기능이 다르듯, 하지만 스마트폰의 핵심적 기능(전화, 와이파이 연결 등)은 존재 * 컴퓨터의 경우, 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 운영체제의 심장, 커널(kernel) 운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel)이라고 한다. 거의 운영체제가 곧 커널을 지칭한다고 봐도 된다. 하지만 운영체제에는 속하는데 커널에는 속하지 않는 기능? 유저 인터페..

운영체제 이해하기 위한 개념들 *(시스템 ) 자원(Resource) 프로그램 실행에 있어서 마땅히 필요한 요소들. 컴퓨터의 네 가지 핵심 부품 포함! 모든 프로그램은 실행을 위해 자원을 필요로 한다. *운영체제(OS, operating system) 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 *커널 영역(kernel space) 운영체제 또한 프로그램 따라서 실행되기 위해서는 메모리에 저장되어 있어야 한다. but 실행 프로그램들이 메모리에 적재되는 영역, 운영체제가 메모리에 적재되는 영역은 다르다! 운영체제가 적재되는 곳이 커널 영역 운영체제의 역할 1. 응용 프로그램 (워드 프로세서, 인터넷 브라우저 등)의 주소는 누가 지정해줄까? → 운영체제 새로운..

*프로그램 입출력 방법 장치 컨트롤러의 레지스터를 CPU가 읽고 씀으로서 입출력 작업이 이루어진다. *인터럽트 기반 입출력

세 가지 입출력 방식 프로그램 입출력 인터럽트 기반 입출력 DMA 입출력 1) 프로그램 입출력 프로그램 속 명령어로 입출력장치(입출력장치에 연결된 장치 컨트롤러)를 제어하는 방법 입출력 명령어로써 장치 컨트롤러와 상호작용 ex. 메모리에 저장된 정보를 하드 디스크에 백업 (= 하드 디스크에 새로운 정보를 쓰기) CPU가 장치컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다. → 근데 입출력장치의 종류가 너무나도 다양해서 방법을 규격화하기 어렵다고 했는데, 어떻게 장치컨트롤러의 레지스터를 다 알 수 있지? CPU가 장치컨트롤러의 레지스터값을 알기 위한 방법 2가지 메모리 맵 입출력 (Memory Mapped I/O) 고립형 입출력(Isolated I/O) 메모리 접근 명령어 == 입출력장치 접근 명령어 ..

입출력장치 - CPU의 정보 주고 받기 입출력장치는 앞서 학습한 CPU, 메모리보다 다루기가 더 까다롭다. 입출력장치 종류가 너무 많아서 컴퓨터 내부와 정보를 주고 받는 방식을 규격화 하기 힘들다. CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다. 물론 CPU나 메모리 등 보다 훨씬 빠른 속도의 입출력장치도 있다. 장치 컨트롤러 이런 이유로 입출력장치는 장치 컨트롤러를 통해 컴퓨터와 연결된다 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신 중개 일종의 번역가 역할 입출력장치와 CPU의 정보 주고 받는 형식이 규격화하기 어렵다는 단점을 극복. 오류 검출 입출력장치에 어떤 문제가 있진 않은지 데이터 버퍼링 *버퍼링(buffering): 전송률이 높은 장치와 낮은 장치 사이에 주..