안녕하세요^^ 오늘은 유닉스/리눅스의 구성요소에 대해 알아보겠습니다. 유닉스/리눅스에서 제일 중요한 부분은 커널인데요, 해커들이 주로 공격하는 곳이 커널입니다. 예를 들어서 shell Coding을 통해서 shell 권한 상승 후 exploit을 하거나 BOF(Buffer over Flow)를 통해서 해킹을 합니다.
-커널
- 유닉스 운영체제의 핵심입니다. 프로세스 관리 , 메로리 관리, 파일 시스템 관리, 장치 관리 등 컴퓨터의 모든 자원을 초기화하고 제어하는 기능을 수행합니다. 시스템을 최초로 구동할 때 커널은 메모리에 적재되는데, 메모리에 상주하면서 프로세스 스케줄링과 메모리, 디스크 드라이브, 네트워크 인터페이스 등 하드웨어 자원을 모든 사용자에게 할당하고 제어합니다.
-커널은 파일 서브시스템과 프로세스 제어 서브시스템으로 구성됩니다.
파일서브시스템에서는 메모리, 외부장치에 데이터를 전송하거나 블록 단위로 입출력을 실행할 때 메모리의 일부를 버퍼로 할당하고, 이것을 사용자의 주소 공간과 외부장치 사이에 두는 디스크 캐시 방법으로 파일을 관리합니다.
프로세스 제어 서브시스템에서는 프로세스의 동기화와 프로세스 간 통신, 프로세스 간 메모리 관리, 프로세스 스케줄링과 디스패칭을 담당합니다. (fork, exec, exit, wait, signal 등이 있음)
셸
-셸은 사용자와 커널 사이의 중간자 역할을 담당하는 특별한 프로그램이다. 셸을 사용자가 입력을 하게 되면 명령을 해석하여 커널에 넘겨주면 커널이 명령의 수행 결과를 돌려줍니다. 셸은 이것을 다시 사용자가 이해할 수 있는 형태로 바꿔서 출력합니다. ex) C 셸, 콘 셸, 배시 셸, z 셸 등
유틸리티와 파일 시스템
유닉스는 각종 개발 도구, 문서 편집 도구, 네트워크 관련 도구 등 매우 다양한 유틸리티를 제공합니다. 유틸리티는 사용자에게 편의를 제공하려고 준비한 시스템 프로그램입니다. 유닉스는 계층적으로 구성된 파일 시스템을 사용하여 시스템 파일과 사용자 파일을 체계적으로 관리합니다.
이상포스터를 마치겠습니다.
'C&C++' 카테고리의 다른 글
백준 1110번 c++ 문제풀이 (0) | 2020.04.05 |
---|---|
C++ , 자바(Java) 입출력 (0) | 2020.04.05 |
블록과 블록체인 (0) | 2020.03.12 |
머클 트리(Merkle tree) (0) | 2020.03.12 |
하이퍼레저 패브릭(Hyperledger Fabric)와 이더리움(Ethereum) 비교 (0) | 2020.03.12 |