728x90

저번엔 시스템 메모리에 관련된 공부를 했습니다. 오늘은 소프트웨어 관리와 하드웨어 관리, 파일시스템 관리까지 해보겠습니다.

 

소프트웨어 관리

리눅스에서 돌아가는 프로그램을 프로세스(process)라고 합니다. 프로세스는 백그라운드와 포그라운드(foreground)가 있는데, 이를 커널이 관리합니다. 리눅스 커널은 다른 프로세스들을 실행시키기 위한 초기 프로세스를 관리합니다. 초기 실행시 virtual memory에 초기 프로세스를 로드하고 이 프로세스가 다른 프로세스의 data와 code를 저장하기 위한 공간을 배정해줍니다.

 

또한 리눅스엔 초기 실행시 8가지의 권한 설정이 있습니다.

 

level 0

코드나 구조에 에러가 있을 경우 하드웨어 손상을 방지하기 위한 시스템 강제 중지모드입니다. 안드로이드의 은어로는 벽돌이라고도 부르죠. 보통 무한부팅처럼 부트로더를 통과한 후에 나는 에러들은 이 모드로 리턴되는것이 아닙니다.

부트로더가 손상된 경우 이 모드로 리턴하고, 아예 부팅모드로 접근하지 못합니다. (odin모드로는 접근 가능해서 이 모드로 복구를 합니다)

 

level 1 

가장 높은? 권한이라 할 수 있습니다. single-user mode이고 오직 관리자만 접근할 수 있습니다. 안드로이드에선 부트로더 모드라고 할 수 있겠네요. 보통 공장 초기화모드로 들어간다고 하고, 부트로더를 제외한 모든 시스템을 수정할 수 있습니다. 

 

level 2

보통 상태에서 네트워크 연결이 차단된 상태입니다. 안전모드라고 생각하시면 됩니다. 다만 아직은 X windows가 없는 콘솔상태입니다. 바이러스를 찾거나 포렌식을 할때 사용합니다.

 

level 3

level 2 상태에서 인터넷 연결이 있는 모드입니다.

 

level 4 (not used)

 

level 5

아주 가장 일반적인 모드입니다. 여러분들이 사용하시는 우분투는 서버컴이 아닌 이상 다 이 상태입니다.

multiuser와 X windows를 지원합니다. 

 

(X windows는 그래픽으로 3차원? 처럼 표현해주는 소프트웨어입니다)

 

level 6 (reboot the system)

이게 그 골때리는 무한부팅 상태입니다. 

 

참고 문서 

www.tutorialspoint.com/init-process-on-unix-and-linux-systems

 

Init process on UNIX and Linux systems

Init process on UNIX and Linux systems Init is the parent of all processes, executed by the kernel during the booting of a system. Its principle role is to create processes from a script stored in the file /etc/inittab. It usually has entries which cause

www.tutorialspoint.com

 

하드웨어 관리

부채널분석? 관련 공부를 조금 했을때 이부분 공부가 가장 골때렸습니다. 

커널의 역할은 소프트웨어와 하드웨어 사이의 브릿지라고 전에 말했습니당. 어느 장치건 리눅스 시스템에 연결하기 위해선 kernel code 안에 driver code를 삽입해야 합니다. 삽입하는 방법은 2가지가 있습니다. 

1. Drivers compied in the kernel

그냥 해당 드라이버 코드를 삽입한 커널코드를 리컴파일하는겁니다. 커널을 새로 만든다고 할 수 있고, 장비가 많아질수록 비효율적입니다. 매우!

 

2. Driver modules added to the kernel

1번 방법을 사용하다 나온 보완된 방법입니다. 커널 전체를 튀기지 않고 드라이버 코드를 커널에 삽입합니다. 또한 사용이 끝나면 커널에서 제거할 수 있습니다. 이제 대부분의 os들이 이 방법을 사용합니다. 

 

리눅스에서 device들을 Character, Block, Network 이렇게 3가지로 분류할 수 있습니다.  Character 은 모뎀이나 터미널처럼 한번에 한가지의 character 만 다룰 수 있습니다. charater을 번역을 어떻게 해야할지 모르겠슴다 :(

이와 다르게 저장소처럼 여러가지의 character들, 큰 block안에 있는 데이터들을 다룰 수 있는 장치를 Block file이라 부릅니다. 

네트워크 장치는 말 그대로 프로토콜로 소통할 수 있는 기기를 말합니다.

 

이 기기들은 (character, block, network) _(devices) 각각의 특수한 숫자를 가지고 있는 node가 만들어집니다. id card라고 보시면 됩니다. 이렇게 만들어진 node들로 software가 hardware를 사용합니다. (communicate)

 

 파일시스템 관리

 

리눅스의 장점은 여러가지의 filesystem을 지원한다는 것입니다.

 

이 모든 저장소를 VFS(virtual file system)을 이용하여 연결할(interface) 수 있습니다.

 

다음엔 재밌는 GNU Uilities에 대해 알아봅시다 :)

 

참고 서적 -Linux Command Line and Shell Scripting Bible (blum and bresnahan)

728x90

'Linux system' 카테고리의 다른 글

gdb trick  (0) 2021.09.25
Linux 시스템에 대한 이해 _ 1  (0) 2021.04.09

+ Recent posts