공부용/Kernel Exploit Study

[Kernel Exploit] Basic Operating Systems (2)

Operating-System Operations

 - Bootstrap 프로그램을 시작해 system을 초기화하고 커널을 로드한다.

 - System Daemons을 동작한다. 이들은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. (Wikipedia)

 - Kernel Interrupt를 처리를 돕는다.

 

Multiprogramming and Multitasking

 - 여러 프로그램을 동시에 메모리에 로딩 시키는 것을 Multiprogramming 이라고 한다.

 - Timesharing(시분할 시스템)은 CPU 스케줄링과 다중 프로그래밍을 이용해서 각 사용자들에게 컴퓨터 자원을 시간적으로 분할하여 사용할 수 있게 해 준다. (Wikipedia) 즉, A, B, C를 동시에 조금씩 수행하는 것을 뜻한다.

 

Dual-mode and Multimode Operation

 - Dual-mode에는 User mode와 Kernel mode가 있는데, CPU는 이를 판단하여 명령을 수행한다.

 - Privileged instruction을 통해 Kernel mode에서 자원을 관리한다.

 - Virtual machine manger(VMM)은 실제 하드웨어가 없는데 있는 것 처럼 행동하는 것을 뜻하는데, 이는 User mode와 Kernel mode 사이에 또 다른 모드를 필요로 한다.

 

관련 URL: yysecurity.tistory.com/364

 

Process Management

 - Program은 하드웨어에 존재하는 passive entity이고, process는 컴퓨터에서 연속적으로 실행되고 있는 active entity이다.

 - 프로세스는 여러 자원을 필요로 하는데 CPU, memory, I/O, files가 이에 속한다.

 - Thread는 프로그램을 실행하는 가장 기본적인 단위이다.

 

Memory Management

 - 어느 프로세스가 어느 메모리 공간을 사용할지 결정하는 것을 Memory Management라고 한다. 만약 사용하다가 새롭게 할당될 프로세스의 메모리가 부족할 경우, swap(in-out)을 통해 메모리를 확보한다.

 

File-system Management

 - File-system Management에서는 논리적으로는 연속적으로 파일을 관리하는 것처럼 보이지만 실제로는 아니다. 

 - File-system Management의 일부로는 Directories 등이 있다. 

 

Mass-Storage Management

 - 오랫동안 저장소를 사용하는 데 사용되는 것이 Mass-Storage Management이다.

 - 기능에는 Mounting and unmounting, Free-space management, Stroage allocation, Disk scheduling, Partitioning, Protection 등이 있다.

 

Caching

 - 캐싱에 대한 설명은 전 글에 해놨으니 전 글을 참고하길 바란다.

URL: yysecurity.tistory.com/371

 

Cache coherency

 - Cache coherency(캐시 일관성)은 공유 메모리 시스템에서 각 클라이언트(혹은 프로세서)가 가진 로컬 캐시 간의 일관성을 의미한다. 각 클라이언트가 자신 만의 로컬 캐시를 가지고 다른 여러 클라이언트와 메모리를 공유하고 있을 때, 캐시의 갱신으로 인한 데이터 불일치 문제가 발생한다. 예를 들어 변수 X에 대해서 두 클라이언트가 변수 X를 공유하고 있고 그 값이 0이라고 하자. 이때 클라이언트 1이 X에 1을 대입하였고 클라이언트 2가 변수 X를 읽어들이게 되면 클라이언트 2는 클라이언트 1에 의해 수정된 값인 1을 받아들이는 것이 아니라 현재 자신의 로컬 캐시에 있는 0을 읽어들이게 된다. 따라서 캐시 1, 2는 같은 X라는 변수에 대해 다른 값을 가지게 되므로 데이터 불일치 문제가 발생한다. 캐시 일관성을 유지한다고 하는 것은 이러한 데이터 불일치 현상을 없애는 것을 의미한다. (Wikipedia)

 

I/O Subsystem

 - buffering(전송되는 동안 임시 데이터 저장), caching(자주 사용되는 데이터를 빠른 장치에 저장하는 것), spooling(어떤 작업의 출력과 다른 작업의 입력이 겹치는 것) 역할을 처리한다. (이건 나중에 자세히 설명한다고 하셨음 ㅇㅇ)

 

Protection and Security

 - Protection은 access control을 뜻한다. 이는 어떠한 resource에 대해 어떤 사용자가 어떤 동작을 할 수 있다 라는 걸 의미한다.

 - Security는 외부 공격으로부터 시스템을 보호하는 것을 의미한다.

   > Confidentiality(기밀성) - 데이터의 누수가 발생하지 않았음을 의미함.

   > Integrity(무결성) - 데이터가 조작되지 않았고 pure한 상태임을 의미함.

   > Availability(가용성) - 어디서든 해당 데이터의 접근할 수 있다는 것을 의미함.

 

Virtualization

 - Virtualization은 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다. (Wikipedia)

 - Emulation은 소프트웨어를 한 장치가 정말로 다른 장치라고 믿도록 "속이는 것이다". (Wikipedia)

 - Virtualization에서 예를 들자면 같은 H/W에 Virtual Machine을 3개 올린다. 여기서 H/W는 하나지만, Virtual Machine은 3개이고 서로 다른 OS가 올라갈 수 있다. 이러한 환경또한 Virtualization이라고 한다. (Guest OS)