AWS IoT Core 테스트를 위해 cloud9을 바탕으로 디바이스 설정하는 것보다 가상머신으로 디바이스를 만들어서 테스트 하는게 보다 정확할 것 같았다. 해당 테스트를 진행하다 생긴 문제를 해결하기 위해 공유 폴더 사용을 했다.

  • 문제: IoT Core에서 연결 키트를 받았을 때 해당 연결 키트 다운로드하면 로컬 PC에 저장하게 됨. 이를 가상머신에 공유를 해야하는데 바로 되진 않음
  • 해결: 공유 폴더를 활용해 로컬 PC의 폴더를 가상머신과 연결해 사용하자!

[테스트 환경]

  • VirtualBox: 7.0.10 ver
    • Ubuntu: ubuntu 22.04.3-desktop-amd64.iso
    • VBoxGuestAdditions_7.0.10.iso

 

가상 머신 생성

원하는 이름과 ISO Image를 넣어준다. 나는 ubuntu로 진행함!

user도 원하는대로~

내가 사용하는 ubuntu image 버전에 맞춰 기본 메모리의 경우 4GB 이상, CPU는 2 ~ 4개를 추천한다.

디스크 사이즈의 경우 25GB 이상으로 해야 해당 iso image가 설치되고 커널 패닉 오류가 생기지 않는다.

만들면 자동으로 가상 머신이 실행된다.

 

공유 폴더 생성 및 연결

원하는 이름으로 로컬 PC에 폴더를 생성한다.

해당 폴더의 속성에 들어간다.

속성의 공유 탭에서 고급 공유 → 권한 클릭

위 이미지와 같이 모든 권한을 허용해주고 확인 클릭 → 이후에 다 확인해서 폴더 공유를 완료하면 된다.

 

다시 가상머신으로 돌아와서

가상머신의 설정에서 공유 폴더 → 폴더 추가 → 위와 같이 설정해주면 된다. (설정이 끝나면 확인을 눌러 적용 시킨다.)

마운트 지점도 원하는대로 설정해준다.(나는 /home/realyun/iot/)

 

(미리 VBoxGuestAdditions_7.0.10.iso 이 친구를 다운받아서 설치를 해줘야한다!)

 

머신 내부 안 설정에서 Sharing 허용도 해줘야한다. 원하는 폴더로 지정해서 해도 좋다! (나는 iot 폴더로 지정했다..)

게스트 확장 CD 이미지 삽입을 클릭해준다.

(만약 위 이미지 처럼 메뉴가 보이지 않는다면 호스트키+C 를 누르면 된다. 호스트키는 나는 ctrl+alt로 설정한 상태!)

폴더에서 위와 같이 autorun.sh 파일을 우클릭하고 실행시켜준다.

 

공유된 폴더가 나타나도 접근 권한이 없다고 뜬다.

터미널 창에서 아래 명령어를 입력해준다.

sudo gpasswd -a <user-id> vboxsf

입력 후 reboot 진행한 뒤에 폴더에 접근이 가능해진다.

이제 원하는 파일을 생성하면 로컬 PC에도, 가상머신에도 적용된다!

'Computer Science > Operating System' 카테고리의 다른 글

[Linux] CentOS 교육 -3  (0) 2022.10.26
[Linux] CentOS 교육 -2  (0) 2022.10.26
[Linux] CentOS 교육 -1  (0) 2022.10.24
[개념] File System 2(Implementation)  (0) 2021.08.12
[개념] File System 1  (0) 2021.08.12

File-System Structure

  • logical file system : meta data(내용을 제외한 모든 파일 시스템 구조) 관리, Directory 구조를 관리, FCB
  • file-organiztion module : 물리 블럭과 논리 블럭을 알고 있어서 논리 주소를 물리주소로 변경
  • basic file system : 적절한 장치드라이버에게 물리블록을 읽고 쓰도록 명령 내림
  • I/O control : Device driver와 interrupt handler로 이루어져 있으며 고수준 언어의 명령을 디바이스에 맞는 저수준 언어로 변경

 

Virtual File System

  • os는 동시에 여러 타입의 파일 시스템을 지원해야함.
  • 기존 파일 시스템 밑에 가상파일 시스템을 두어 다양한 파일 시스템을 다룸
  • 네트워크로 연결된 파일 시스템도 하나의 파일 시스템으로 볼 수 있도록 도와줌

 

Directory Implementation

  • 하드에서는 파일과 디렉터리를 대부분 선형 구조로 관리
  • Linked List를 이용(Hash Table, B+트리)

 

Allocation Methods

  • Contiguous Allocation : 외부 단편화가 일어날 수 있으며 압축에 많은 비용
  • Linked Allocation : 디스크를 구성하는 블락 단위로 연결리스트 구조로 연결, 중간에 접근하기 위해선 순차 탐색, 에러 블락있으면 끊긴다.
  • Indexed Allocation : index block을 두어 해당 블락안에 파일을 구성하는 블락들의 포인터를 담는다. 디렉토리는 파일 이름과 index block의 주소를 가진다. index block이 사라지면 파일을 모두 잃어 버린다..

 

Free-Space Management

  • Bit map : n개의 블락이 있으면 n개의 배열을 만들어 0과 1 저장
  • Linked List : 비어있는 블락끼리 연결
  • Grouping : 하나의 블락이 루트 블락이 되어 다른 빈 블락을 가리킴
  • Counting : 첫번째 빈 블락에 연속된 빈 블락의 개수 저장

 

(추가)

B-Tree

  • 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조
  • 자료를 정렬된 상태로 보관하고, 삽입 및 삭제를 대수 시간으로 가능
  • 상향식 구성

https://hyungjoon6876.github.io/jlog/2018/07/20/btree.html

'Computer Science > Operating System' 카테고리의 다른 글

[Linux] CentOS 교육 -2  (0) 2022.10.26
[Linux] CentOS 교육 -1  (0) 2022.10.24
[개념] File System 1  (0) 2021.08.12
[개념] Storage Management  (0) 2021.08.12
[개념] Memory Management 5(Virtual Memory)  (0) 2021.08.12

File

  • 컴퓨터 시스템을 편리하게 사용하기 위해 저장된 정보에 대한 일과된 논리적 관점을 제공하고 저장장치의 물리적 특성을 추상화하여 논리적 저장 단위, File을 정의
  • 속성 : 이름, 식별자, 타입, 위치, 크기, 시간 등
  • 명령어 : 생성, 쓰기, 읽기, 재설정, 삭제, 절단
  • open() 시스템 호출로 파일에 접근
  • 재접근에 대한 낭비를 줄이기 위해 open-file table에 모든 열린 파일에 대한 정보가 저장됨
  • close()로 닫으면 open-file table에서 제거됨
  • file pointer : 읽기와 쓰기 시스템 호출의 일부분, 파일을 어디까지 읽었다는 것을 나타냄
  • Open File Locking : Shared lock 여러 프로세스가 잠금 가능, writer lock 한 번에 한 프로세스만 잠금

 

File Structure & Internal File Structure

  • 각각의 파일들은 그 파일을 다루는 프로그램에 의해 인식 가능한 내부 구조를 일정한 형태로 가짐
  • 특정 파일들은 os가 인식할 수 있도록 미리 정해진 구조를 따름
  • 파일은 일련의 블록으로 간주, 디스크 입출력은 한 블록 단위로 수행되고 모든 디스크 블록들은 동일한 크기를 가짐

 

Access Methods

  • Sequentail Access : 순차 접근, Tape Model과 비슷
  • Direct Access : 고정길이의 논리 레코드의 집합으로 정의되어야함, 레코드 번호로 접근
  • IBM의 ISAM : 크기가 작은 마스터 색인을 메모리에 유지, 우선 메모리에서 색인 블록 번호를 찾고 레코드로 가서 순차적으로 데이터를 찾음.

 

Directory and Disk Structure

  • 디렉토리는 그 볼륨에 있는 모든 파일에 대한 이름, 위치, 크기, 유형과 같은 정보를 기록

  • 위 그림에서 directory는 root라 생각하면 되고 하나의 disk가 파티션의 복수의 directory로 나누어질 수 있다.
  • format : 해당 디스크의 데이터를 모두 지우는 것이 아닌 directory를 재설정

Directory 종류

Single-Level Directory

  • 모든 파일이 한개의 디렉터리 밑에 있다. (1:1)

 

Two-Level Directory

  • master file directory 밑에 user file directory 존재, 경로명을 써서 파일을 찾아가야 함

 

Tree-Structure Directories

  • os는 하위 디렉터리 역시 하나의 file로 본다. 비트를 설정해 0이면 file, 1이면 subdirectory
  • 아래로 계속해서 나아갈 수 있지만 cycle은 안된다. 즉, 파일공유 안됨!
  • rm -r <dir-name>에서 r의 recursive..

 

Acyclic-Graph Directories

  • 그래프 구조로 cycle 허용
  • 링크는 다른 파일이나 서브 디렉터리를 가리키는 포인터(하나의 파일로 취급)
  • 하나의 파일에 복수의 링크가 존재 가능
  • 원본 파일을 지워도 링크 파일은 존재 → Dangling pointer

 

General Graph Directory

  • 파일을 검색할 때 마스터 디렉터리부터 경로를 따라 탐색
  • 서브 디렉터리를 지시하는 링크가 사이클 만들면 똑같은 경로를 재탐색하거나 무한루프
  • 한 번에 탐색할 수 있는 디렉터리 개수를 제한!
  • garbage collection 기법을 사용해 외부에서 가리키는 지시 포인터 없으면 삭제

 

File-System Mounting

  • 파일 시스템의 디렉터리 구조에 접근을 하기 위해서는 마운트가 되어야 한다.
  • os는 디바이스 이름과 파일 시스템을 부착할 수 있는 mount-point가 있고 파일 시스템 연결 가능

 

File Sharing

  • 시스템에 복수의 사용자가 있다면 파일 공유 가능
  • 단 파일을 보호하기 위해 해당 파일에 대한 권한이 사용자마다 정해짐
  • 소유자, 그룹, 모든 사람 (리눅스 명령어 chmod로 권한 설정 가능)

+ Recent posts