분류 전체보기 228

[라즈베리파이] webOS 쉽게 설치하기

webOS는 LG전자의 모바일, 스마트 TV용 운영체제입니다. 앞의 글에서처럼 설치한 라즈베리파이를 이용해서 webOS를 구동시키는 쉬운 방법에 대해서 알아보도록 하겠습니다. 참고로 이 글은 라즈베리파이 4를 사용하는 것을 기준으로 합니다. 우선 원래의 정석적인 방법부터 알아보겠습니다. 원래는 webOS를 구동시키기 위해서는 리눅스 환경에서 빌드를 시켜야 합니다. sudo apt update sudo apt upgrade sudo apt install nodejs sudo apt install npm sudo npm install -g @enact/cli sudo apt install git git clone https://github.com/webosose/build-webos.git cd build-..

[운영체제] File System Implementation

파일 시스템은 디스크로의 효율적이고 편리한 접근을 제공합니다. 하지만 이 파일 시스템을 설계함에 있어서는 2가지 고려해야 할 사항이 존재합니다. 첫 번째는 파일 시스템이 사용자에게 어떻게 보여야 할지 정의하는 것입니다. 다시 말해, 파일의 이름이나 id와 같은 속성, 파일에 허용된 연산, 디렉터리 구조 등을 정의하는 것입니다. 두 번째는 파일들을 실제 저장 장치인 디스크에 어떻게 저장하느냐 하는 것입니다. 즉 디스크의 어떤 블록에 해당 파일을 저장할지를 결정해주는 것입니다. 이 글에서는 이 두 번째 문제에 집중하여 파일 시스템의 구현을 다뤄볼까 합니다. 1. 파일 시스템 자료 구조 (Data Structure for File System) 우선 디스크에서 블록이 무엇인지부터 살펴보겠습니다. 블록(bloc..

[운영체제] File System Interface

운영체제에서 마지막으로 다뤄볼 챕터는 바로 파일 시스템으로, 두 번의 글에 나누어 Interface와 Implementation에 대해 공부해보고자 합니다. 파일 시스템이란 사실상 메모리의 관리에 관한 내용이며, 운영체제 중에서 사용자에게 가장 많이 노출되는 부분입니다. 한 번 시작해보도록 하겠습니다. 1. 파일과 디렉터리 (File & Directory) 컴퓨터는 정보를 어떤 저장 매체에 저장할 수 있으며, 파일이란 이 정보를 담는 논리적인 단위로 생각할 수 있습니다. 사용자의 관점에서 보면, 파일은 이름이 붙여져 있고, 시스템이 재부팅되어도 사라지지 않는 데이터들의 집합으로 생각할 수 있고, 운영체제의 입장에서 보면 데이터를 저장하고 있는 디스크 블록들의 집합체로 볼 수 있습니다. 어떠한 자료이든, ..

[라즈베리파이] SSH를 이용한 원격 접속

지난 글에서 라즈베리파이를 어떻게 구동시키는지를 알아보았습니다. 이번에는 리눅스를 이용해 라즈베리파이에 원격으로 접속하는 방법을 알아보도록 하겠습니다. 우선 라즈베리파이의 IP 주소를 먼저 알아야 합니다. 라즈베리파이의 IP 주소는 라즈베리파이의 터미널에 hostname -I라는 명령어를 통해 쉽게 확인하실 수 있습니다. 그리고 ssh로 접근이 가능하려면 설정을 조금 바꾸어주어야 합니다. 우선 sudo raspi-config를 실행시켜 설정 창으로 넘어갑니다. 그리고 키보드 조작을 이용해 3번째 메뉴인 Interface Option에 들어가서 SSH 항목을 Enable로 바꿔주시면 됩니다. 이렇게 하면 원격 접속을 위한 준비는 모두 마친 것입니다. 원격 접속은 putty와 우분투, 두 방법으로 실행해보도..

[라즈베리파이] 라즈베리파이 시작하기

오늘은 라즈베리파이를 설치하고 구동하는 방법을 알아보도록 하겠습니다. 우선 라즈베리파이는 쉽게 생각해서 작은 컴퓨터라고 생각하면 되겠습니다. 작은 컴퓨터에 내가 원하는 모니터나 마우스 등을 연결하여 사용할 수 있는 형태입니다. 라즈베리파이의 메모리는 SD 카드를 이용합니다. 그래서 우선 SD 카드를 다른 컴퓨터에서 연결해서 라즈베리파이의 운영체제를 먼저 설치받아야 합니다. 윈도우를 설치할 때 USB에 실행파일을 넣어서 부팅시키는 것과 같은 원리라고 생각하시면 됩니다. 운영체제는 아래의 링크에서 다운로드하실 수 있습니다. www.raspberrypi.org/software Raspberry Pi OS – Raspberry Pi The Raspberry Pi is a tiny and affordable co..

[운영체제] Virtual Memory (2) - Page Replacement Algorithm

페이지 교체 알고리즘에는 여러 가지가 존재합니다. 이 중에 어떤 알고리즘을 사용하느냐에 따라 실행시간에 큰 영향을 미칠 수 있으니 최대한 좋은 알고리즘을 선택하는 것이 중요합니다. 1. FIFO (First in, First out) 가장 간단한 페이지 교체 알고리즘은 FIFO입니다. 말 그대로 메모리에 올라온 지가 가장 오래된 페이지를 내쫓는 알고리즘이죠. 페이지가 올라온 시간을 페이지마다 기록해도 되고, 페이지들이 올라온 순서대로 큐를 만들어서 관리해도 됩니다. 구현도 쉽고, 이해도 쉽지만, 자주 사용하는 페이지들이 올라온 지 오래되었다는 이유만으로 디스크로 돌아간 뒤 금방 다시 올라와야 하는 상황을 생각해보면 확실히 최적화된 모습의 알고리즘은 아닐 것입니다. 2. Optimal Page Replac..

[운영체제] Virtual Memory (1) - Demand Paging, Page Replacement

지난 글에서까지 메모리 관리에 대한 공부를 해보았습니다. 메모리 관리의 핵심은 다중 프로그래밍을 실현하기 위해 메모리에 많은 프로세스들을 동시에 유지할 수 있도록 하는 것입니다. 하지만 메인 메모리를 공부하면서 공부했던 방식은 모두 프로세스가 실행되기 위해 메모리로 올라와야 한다는 것을 전제로 합니다. 하지만 가상 메모리(Virtual Memory)를 사용하면 프로세스 전체가 다 메모리로 올라오지 않아도 실행이 가능합니다. 1. 가상메모리? 가상 메모리를 이용하면 프로그램이 실제 물리 메모리보다 큰 메모리 공간을 요구하더라도 사용이 가능하다는 장점이 있습니다. 가상 메모리는 물리 메모리로부터 사용자 관점의 논리 메모리를 분리시켜 메인 메모리를 균일한 크기의 저장 공간으로 구성된 엄청나게 큰 배열로 추상화..

[운영체제] Main Memory (3) - Page Protection, Page Table Structure

이번 글에서는 지난 글에서 공부한 페이징의 남은 부분들에 대해서 공부해보도록 하겠습니다. 1. 페이지 보호 (Page Protection) 페이지 테이블을 만들 때, 메모리 보호를 위해서 각 페이지들에 추가적인 비트들을 부여하여 사용할 수 있습니다. 첫 번째로는 Read-write/Read-only를 나타내는 비트입니다. 당연히 Read-write 모드일 때만 데이터를 수정할 수 있으며 Read-only 모드에서는 읽을 수만 있습니다. 두 번째는 Valid-invalid bit입니다. 이 비트가 valid로 설정되어 있으면, 해당 페이지가 프로세스의 논리 주소 공간 안에 있는 합법적인 페이지라는 것을 나타냅니다. 운영체제는 이 비트를 통해서 해당 페이지에 접근을 허용할 것인지 말지를 결정합니다. 예를 들..

[운영체제] Main Memory (2) - Paging

이번에 공부해 볼 내용은 페이징입니다. 바로 앞의 글에서는 하나의 프로세스가 하나의 파티션을 할당받는 연속적인 메모리 할당에 대해서 공부해보았습니다. 하지만 메모리는 비연속적인 물리적 주소 공간을 할당해 줄 수도 있습니다. 그리고 이런 비연속적인 할당을 통해 external fragmentation을 예방할 수 있습니다. 1. 페이징 (Paging) 페이징의 기본적인 방법은 다음과 같습니다. 물리 메모리(physical memory)는 프레임(frame)이라고 불리는 일정한 크기의 고정된 사이즈의 블록들로 나누어집니다. 그리고 논리 메모리(logical memory)는 페이지(page)라고 불리는 프레임과 같은 사이즈의 블록으로 이루어집니다. 그리고 논리 주소는 페이지 번호(page number)와 페이..

[운영체제] Main Memory (1) - Address Binding, Continuous Memory Allocation

이번 글에서는 메인 메모리에 대해서 공부해보도록 하겠습니다. 메모리는 어떤 값을 저장하는 1차원 배열이라고 볼 수 있습니다. CPU는 주소 값을 통해 메모리의 특정 위치에 접근할 수 있습니다. 프로세스가 하나뿐일 때는 그 프로세스가 메모리를 모두 사용해도 되지만, 프로세스가 두 개 이상일 경우 이 메모리 자원들을 어떻게 나누어서 쓸 것인가는 중요한 이슈입니다. 우선은 메모리 주소의 할당부터 하나씩 차근차근 공부해 나가 보도록 하겠습니다. 1. 주소 할당 (Address Binding) 프로그램은 원래 디스크에 저장되어 있습니다. 이 프로그램이 실행되기 위해서는 메인 메모리로 올라와서 프로세스가 되어야 합니다. 그리고 프로세스는 실행될 때 메모리에 적재해 놓은 명령어와 데이터에 접근하여 사용하게 됩니다. ..