| 핀토스 운영체제란?


핀토스 운영체제는 x86 아키텍처에서 운영체제의 기본을 이해하기 위해 고안된 교육용 운영체제입니다. 2004년 스탠포드 대학에서 Ben Pfaff라는 사람에 의해 만들어졌고, 이 운영체제는 커널 스레드, 유저 프로그램을 로딩하고 실행하는 것, 파일 시스템 등 운영체제가 갖춰야 할 기본적인 기능들을 지원하고 있습니다. 핀토스 운영체제는 Bochs나 QEMU 등 x86 시뮬레이터 위에서 사용해야 합니다.


포스트에서는 '리눅스 우분투' 운영체제에서 'Bochs' 시뮬레이터를 통해서 Pintos를 설치하고 정상작동 확인하는 것 까지 다뤄보도록 하겠습니다.




| 핀토스 운영체제 설치하기


1. 가상머신 혹은 호스트 운영체제로 '우분투' 운영체제 등 리눅스 계열 운영체제를 설치한다. 


※ 가상머신 Virtual Box에 리눅스 우분투 설치하기 ► http://thinkpro.tistory.com/40



2. 우분투 위에 Bochs 시뮬레이터를 설치한다.


2-1. 다음 사이트에서 Bochs 다운로드받기

► http://bochs.sourceforge.net



tar.gz 확장자를 받으셔야 합니다.



2-2. 다운 받은 압축 파일을 원하는 폴더로 이동한 후, 다음 명령어로 파일 압축 해제 해줍니다.


$ cd ~ // 홈 디렉토리에 bochs 파일을 압축 해제. 원하는 경로로 설정하세요.

$ tar xvf bochs-2.6.2.tar.gz


2-3. bochs 폴더로 이동합니다. 그리고 컴파일 및 설치 과정을 진행합니다.


$ ./configure --enable-gdb-stub --with-nogui

$ make

$ sudo make install


※ "C compiler cannot create executables" 오류가 난다면

$ sudo apt-get install libc6-dev g++ gcc 


※ "X windows libraries were not found" 오류가 난다면

$ sudo apt-get install xorg-dev


※ 그 외 오류의 경우 gcc 버전이 호환되지 않는 경우가 많습니다.

gcc 버전을 다운그레이드하세요.

$ sudo apt-get install gcc-4.6

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50




3. Pintos 설치 및 작동 확인하기


여기서 소스 코드를 다운로드 받읍시다.

► http://pintos.software.informer.com/download/


3-1. 소스 코드를 압축 해제합니다.

$ tar xvf pintos.tar.gz


3-2. bashrc 파일에 환경 설정

$ vi ~/.bashrc


파일 내에 마지막에 

export PATH="$PATH:/home/usr/pintos/src/utils"

추가(usr는 자신의 username으로 변경해야 함.)


$ source ~/.bashrc // 이는 환경설정을 등록하는 명령어임.




4. Pintos 가 제대로 작동하는지 확인하기.


$ cd pintos/src/threads

$ make

$ cd build

$ pintos -- run alarm-multiple


오류없이 프로그램이 돌아간다면 성공한것입니다.




| 메모리 브레이크포인트


메모리 브레이크포인트(Memory Breakpoint)는 사실 브레이크포인트가 아니다. 디버거가 메모리 브레이크포인트를 설정하면 해당 메모리 영역이나 페이지에 대한 접근 권한이 변경된다. 메모리 페이지는 운영체제가 처리하는 가장 작은 단위의 메모리 크기다. 메모리 페이지가 할당되면 그곳에 대한 접근 권한이 부여된다. 메모리 페이지에 부여되는 접근 권한은 다음과 같다.



- 페이지 실행(Page Execution) 이 권한이 할당된 메모리 페이지는 실행시킬 수 있다. 하지만 이 메모리 페이지에서 데이터를 읽거나 쓰려고 하면 접근 위반 예외가 발생한다.


- 페이지 읽기(Page Read) 프로세스는 이 권한이 할당된 메모리의 내용을 읽을 수 있따. 하지만 데이터를 쓰거나 실행시키려고 하면 접근 위반 예외가 발생한다.


- 페이지 쓰기(Page Write) 이 접근 권한은 프로세스가 해당 메모리 페이지에 데이터를 쓰는 것만 허용한다.


- 보호 페이지(Guard Page) 이 권한이 할당된 페이지에 대해 어떤 종류의 접근이라도 발생하면 예외를 발생시킨다. 예외를 발생시킨 이후에는 페이지의 원래 상태로 복귀된다.



대부분의 운영체제는 이와 같은 접근 권한들을 지원한다. 예를 들어 메모리상에는 읽고 쓰는 것이 가능한 메모리 페이지가 있을 수 있고 읽고 실행하는 것이 가능한 또 따른 메모리 페이지가 있을 수 있다. 또한 각 운영체제는 특정 메모리 페이지의 접근 권한을 질의하거나 접근 권한을 원하는 대로 변경시킬 수 있는 내장 함수를 제공한다. 



메모리의 접근 권한 중에서 우리의 관심사는 바로 보호 페이지(Guard Page) 권한이다. 이 접근 권한은 스택에서 힙을 분리해내거나 특정 메모리 영역이 어떤 범위 이상으로 커지는지 확인하는데 유용하다. 또한 특정 메모리 영역에 대한 접근이 발생할 때 프로세스를 중지시키고자 할 때 매우 유용하게 사용된다. 


예를 들어 네트워크 서버 어플리케이션을 리버스 엔지니어링할 때 어플리케이션에 전달된 패킷의 페이로드가 저장되는 메모리 영역에 메모리 브레이크포인트를 설정할 수 있다. 이렇게 하면 브레이크포인트를 설정한 메모리에 대한 접근이 발생했을 때 CPU가 보호 페이지 디버그 예외를 발생시키기 때문에 어플리케이션이 전달된 패킷의 내용을 언제, 어떻게 사용하는지 판단할 수 있게 된다. 그리고 해당 메모리 페이지에 접근하는 명령을 조사해 어플리케이션이 패킷의 내용으로 어떤 작업을 수행하는 것인지 알아낼 수 있다. 메모리 브레이크포인트는 실행되는 어떤 코드도 변경하지 않기 때문에 소프트 브레이크포인트가 갖고 있는 코드 변경으로 인한 제약을 극복할 수 있다.









▲ Raspberry Pi 의 모습 (모델 B)



그림과 같이 라즈베리 파이는 싱글보드 컴퓨터인 만큼 CPU, GPU, 메모리, 입출력 장치를 모두 가지고 있는 완전한 PC다. 메인 칩으로는 700Mhz으로 동작하는 ARM11을 코어로 한 Broadcom의 BCM2835 SoC 멀티미디어 프로세서를 탑재하고 있다. 이는 CPU, GPU, RAM, 오디오, USB, GPIO 기능을 수행한다. 또한,USB허브 및 랜(LAN) 컨트롤러를 담당하는 LAN9512 칩을 사용하여 네트워크와 기타 장비를 제어하고 있다. BCM2835는 H.264 화상 압축용 프로세서와 3D 그래픽 엔진도 탑재되어 있어서, 1080p(1920x1080) Full HD 화상도의 멀티미디어 재생이 특징이다. 또한, ARM11(ARM1176JZ-F)는 RISC(Reduced Instruction Set Computer) 아키텍처를 채택하고 있기 때문에 소비전력이 매우 적은 것도 특징이다.



▼ 모델 A와 B의 외관상 차이




▼ 라즈베리파이 모델별 스펙 정리 표


 

 모델 A 

 모델 B 

 가격

 25 USD

 35 USD 

 SoC(System on Chip)

 Broadcom BCM2835 SoC

 CPU

 700Mhz Low Power ARM1176JZ-F 

 CPU

 Dual Core VIdeo Core IV 

 메모리

 256MB SDRAM

 512MB SDRAM 

 내장메모리 

 SD, MMC, SDIO 

 이더넷 

 없음 

 10/100 이더넷 RJ45 잭 

 USB 포트 

 1 개 

 2 개 

 비디오 출력 

 HDMI, 컴포지트 RCA, LCD 연결을 위한 DSI 포트 

 오디오 출력

 3.5mm 오디오 출력단자 및 HDMI 

 기타기능 

 GPIO, I2C, SPI, 카메라 연결을 위한 CSI 포트 

 운영체제 

 Linux(Raspbian, Arch Linux ARM, RISC OS 등) 

 전원

 MicroUSB 포트를 통한 5V 전원공급 

 전력

 500mA(2.5W)

 700mA(3.5W)

 크기

 8.6 x 5.4 x 1.5 cm 

 8.6 x 5.4 x 1.7 cm 













| 새로운 변화, iOS 8


  이번에 나오게 될 아이폰 (아이폰 6) 에 탑재될 운영체제인 iOS 8 컨셉에서 새로운 사용자 경험을 만끽할 수 있는 혁신적인 UI와 기능들이 추가되었다고 합니다. 이전 운영체제 버전인 iOS 7은 '멀티 태스킹'에서 능력이 떨어진다는 비판을 많이 받았지만, 더이상 이와 같은 이유로는 iOS를 비판할 수 없을 정도로 '멀티 태스킹' 기능에 중점을 두어 개발이 되었다고 합니다. 


  새로 공개된 차세대 운영체제 iOS 8은 새로운 컨트롤 센터(제어 센터)와 결합된 멀티 태스킹 보기를 더욱 더 직관적으로 만든 것 같습니다. 







| iOS 8의 Mission Control (미션 컨트롤)


  기존 맥 OS X에서 불리던 '미션 컨트롤'기능을 새롭게 추가하여 멀티 태스킹 보기를 더욱 더 수려하게 만들었습니다. 비록, 데스크탑과 완전 똑같은 모습을 구현할 수 없는게 사실이지만, 그럼에도 불구하고 iOS에 어울리도록 잘 만든 기능인 것 같습니다. 확실하게 멀티 태스킹 능력이 더 향상된 것이 보이네요.


 


※ 이 컨셉은 기정사실이 아닙니다... 아마 iOS 개발 및 디자인 건에 있어서 화두가 되고 있는 UI 컨셉인거 같습니다. 





+ Recent posts