● Process Control Block (PCB) 운영체제가 각 프로세스를 관리하기 위해, 프로세스마다 해당 프로세스의 정보가 구조체로 구성되어 있는 정보이다. (프로세스 문맥) 1. 운영체제가 프로세스를 관리상 사용하는 정보 프로세스의 상태 (Ready, Running, Blocked), PID, 스케쥴링 정보, Priority 등을 담고 있다. · Priority는 Queue에 먼저 온 순서대로 처리하지는 않고 스케줄링 기법마다 우선순위가 있는데 해당 정보를 나타낸다. 2. CPU 수행 관련 하드웨어 값 CPU에 어떤 레지스터 값을 넣어서 실행하고 있었지, 프로그램이 어디까지 실행이 되었는지 나타내는 Program Counter가 있다. 3. 메모리 관련 Code, Data, Stack이 ..
터미널에서 네트워크를 연결하기 위해 wpa_cli (command line interface)를 사용 wpa_cli -i wlan0 명령어로 wpa_cli 실행 status : 현재 연결 상태를 알 수 있음 scan : 주변 AP들 검색을 시도. 완료되면 CTRL-EVENT-SCAN-RESULTS 이벤트를 반환 scan_result : 검색된 AP정보 출력 list_network : 현재 이용 가능한 네트워크 리스트 출력 add_network : 새로운 네트워크 연결 생성 set_network [네트워크 id] ssid "[AP 이름]" : AP 이름 셋팅 ex) set_network 0 ssid xxxxxxxx set_network [네트워크 id] psk "[AP 패스워드]" : AP 패스워드 셋..
● 프로세스의 문맥 (context) 특정 시점을 놓고 봤을 때, 이 프로세스가 어디까지 실행을 했는지 저장하고, 새로운 프로세스를 실행시키기 위해 필요한 정보들이다. 프로세스의 문맥(context)은 크게 세 가지로 구분된다. CPU 수행상태를 나타내는 하드웨어 문맥 : Program Counter, 각종 Register 프로세스의 주소 공간 : code, data, stack 프로세스 관련 커널 자료구조 : PCB, Kernel Statck 프로세스가 실행이 되면 그 프로세스만의 독자적인 주소공간(code, data, stack)을 형성하고, 특정 프로세스가 CPU를 잡게 되면 Program Counter Register가 이 프로세스의 코드 어느 부분을 가리키고 있으며, 매 순간 Instruct..
● 프로그램의 실행 (메모리 Load) 실행 파일은 하드 디스크에 저장이 되고, 실행을 시키면 가상 메모리 단계를 거쳐 물리적 메모리에 올라가 프로세스가 된다. 프로그램을 실행시키면 자기 자신만의 독자적인 주소 공간이 만들어지며, 주소 공간은 Stack, Data, Code영역으로 구성되어 있다. 코드 영역 메모리의 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다. 데이터 영역 메모리의 데이터 영역은 프로그램의 전역 변수와 정적 변수가 저장되는 영역이다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 스택 영역 메모리의 스택 영역은 함수의 호출과 관계되는 지역 변수와..
입출력 입출력이란 컴퓨터 시스템이 컴퓨터 외부의 주변 장치들과 데이터를 주고받는 것을 말한다. 입출력에는 동기식 입출력과 비동기식 입출력이 있다. ● 동기식 입출력 I/O 요청 후 입출력 작업이 완료된 후에 CPU 제어권이 사용자 프로그램으로 넘어가는 방식이다. 사용자 프로그램에서 필요한 데이터를 읽어와서 처리해야 하는 경우에는 동기식 입출력을 사용한다. 사용자 프로그램이 디스크에서 어떠한 정보를 읽어오라는 요청이 있을 때, 입출력이 완료될 때까지 시간이 걸린다. 이때, 동기식 입출력은 입출력이 진행되는 동안 프로그램의 다음 명령을 수행하지 않고 기다리게 된다. 그러다가 입출력이 완료되어 인터럽트를 통해 그 사실이 전달된 후에야 CPU 제어권이 사용자 프로그램에 넘어가서 다음 명령을 수행한다. → 동..
컴퓨터 시스템의 일반적인 구조 좌측은 CPU와 메모리로 이루어져 있는 우리가 일반적으로 이야기하는 컴퓨터이고, 우측은 I/O device. 호스트 컴퓨터에 붙어서 데이터를 컴퓨터 안에 집어넣는 Input이나 결과를 내보이는 Output을 하는 Device이다. 각각의 Device에는 디바이스를 전담하기 위한 Device Controller들이 있고, 이 Device Controller는 I/O Device를 통해서 데이터를 주고받기 위해 Local buffer에다가 저장하며 CPU한테 뭔가를 알려주고 싶을 때에는 Device Controller가 인터럽트를 걸어 알려준다. Local Buffer : i/O Device 작업 데이터를 저장 Device Controller : 각 디바이스마다 전담하기 위..
가상 머신에 Ubuntu를 설치해 보자. 우선 설치 파일을 받기 위해 아래 홈페이지에 접속하자. releases.ubuntu.com/16.04/ Ubuntu 16.04.7 LTS (Xenial Xerus) Select an image Ubuntu is distributed on two types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what mos releases.ubuntu.com Ubuntu..
라즈베리 파이 커널 : github.com/raspberrypi/linux 커널을 빌드하는데 두 가지의 방법이 있다. 로컬에서 빌드 크로스 컴파일 커널 크로스 컴파일의 장점은 .. 32bit OS를 사용하여 64bit 커널 빌드 가능 (반대 경우도 마찬가지) 라즈베리파이 자체보다 훨씬 빠르게 커널 크로스 컴파일이 가능 라즈베리파이에서 빌드 라즈베리파이에서 최신 버전의 OS를 설치 후 부팅한 후 로그인하여 인터넷 연결 아래 명령어로 깃과 빌드 의존성 설치 및 소스 내려받기 $ sudo apt install git bc bison flex libssl-dev make $ git clone --depth=1 https://github.com/raspberrypi/linux 위의 git clone은 현재 활..