본문 바로가기
시스템/시스템보안

(1-5) OS

by 주황딱지 2024. 7. 8.

Copy-on-Write

 

Copy-on-Write(COW)는 부모와 자식 프로세스를 메모리 안에서 같은 페이지들을 처음으로 공유하게 허용한다.

  • 이러한 공유 페이지는 COW로 표시된다. 즉, 프로세스 중 하나가 공유 페이지에 기록되면 공유 페이지의 복사본이 생성된다.

COW는 부모 프로세스가 자식 프로세스를 생성할 때  ( fork() ) 생기는 메모리 이슈에 대한 해결책으로 나온 방법이다. 자식 프로세스를 생성하면 부모 프로세스가 가지고 있던 page table을 그대로 물려받는다. 문제는 그렇게 되면 너무 많은 메모리 overhead가 발생한다. 그렇다고 메모리를 공유하면 독립적인 동작을 하지 못한다. 즉, COW를 사용하면 메모리는 적게 잡아먹어야 하고 독립적으로 움직이게 한다. 

 

일반적으로, free 페이지들은 pool of zero-fill-on-demand pages들에 할당된다.

  • Pool은 항상 빠른 demand page 실행을 위해 free frame을 갖고 있어야한다.

다양한 버젼의 UNIX(LINUX, mac OS, BSD UNIX포함)에서 fork() 시스템 콜의 확장인 vfork()를 제공한다.

vfork()는 virtual memory fork로 부모 프로세스가 멈추고, 자식 프로세스가 부모의 주소 공간을 사용한다,

요즘은 fork()에도 COW를 써서 거의 vfork()는 안쓴다.

 

zero-fill-on-demand-page: 자식 프로세스가 새로 복사하고 메모리에 올리는 page는 0으로 초기화된 상태로 복사하게 되는데 이유는 보안 때문이다. 자식 프로세스의 page를 보고 부모 프로세스가 어디에 접근했는지 같은 정보를 읽을 수 있기 때문이다.

 

 

먼저 자식 프로세스를 생성하면, 부모 프로세스의 주소 공간을 공유하고, 운영체제는 자식 프로세스에게 독립적인 page table을 만들어 준다. 단, 이때 부모 page table의 read-write bit를 read only로 초기화해서 복사하고 만든다.

process 1이 페이지 C를 복사하기 전

 

 

그리고 자식 프로세스가 shared page에 뭔가를 요청하면 read only라 수정이 불가능하다. 그때서야 요청한 page를 복사해서 메모리에 새로 올린다.

복사 후

 

 

이렇게 해서 복사할 때 생기는 overhead를 감소할 수 있다.


File-system Management

 

OS는 한가지의 정보저장소의 논리적 시각을 제공해준다. 

  • OS가 물리적 자산을 논리적 저장 유닛으로 추출한다. 그것이 file이다.

파일 시스템 관리

  1. 파일은 디렉토리에 주로 정리된다.
  2. 많은 시스템에서 접근 관리는 누가 무엇을 접근하는지를 결정한다.
  3. OS가 하는 일이 포함되어 있다. 
    • 파일 및 디렉터리 생성 및 삭제
    • 파일 및 디렉토리를 조작하기 위한 초기 설정(primitive)
    • 보조 저장소에 파일 매핑
    • 안정적인(비휘발성) 스토리지 미디어에 파일 백업 

 


Mass-Storage Mangement

 

- 주로 디스크들이 긴 시간동안 저장되어야 하는 메인 메모리나 데이터에 들어가지 않는 데이터를 저장하는데 사용된다.

- 적절한 관리가 필요하다.- 전체 컴퓨터 작동 속도는 디스크 서브 시스템과 그 알고리즘에 달려 있다.- OS가 하는 일:

• 장착 및 장착 해제
• 여유 공간 관리
• 저장 장소 할당
• 디스크 스케줄링
• 파티셔닝
• 보호

반응형

'시스템 > 시스템보안' 카테고리의 다른 글

(3) Permission  (0) 2024.07.11
(2) Linux basic  (0) 2024.07.08
(1-4) OS  (0) 2024.07.07
(1-3) OS  (0) 2024.07.06
(1-2) OS  (1) 2024.07.05