일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 칼리 리눅스
- nomaltic place
- 노말틱
- Vitual Disk Image
- Virtual Box
- Bitnami
- Linux
- MariaDB
- 네트워크
- 리눅스
- 리눅스 기초
- Bandit
- shell
- 보안
- kali linux
- kali
- nomaltic
- mysql
- 기초
- Error
- 칼리
- Normaltic
- VDI
- Web shell
- virtualbox
- Today
- Total
목록전체 글 (76)
게으른 개발자

기존 파일의 데이터를 읽고/쓰는 방법 : 2가지 인터페이스가 있다. [Unified Buffer Cache를 이용하지 않는 File I/O] 1. File를 open 하고 read/write system call를 한다. 운영체제가 버퍼개시를 확인한다. 2. Memory Mapped I/O 처음에 시스템 콜을 한다. 운영체제에게 Memory Mapped I/O를 쓰겠다는 mmap 시스템 콜을 한다. 자신의 주소공간중 일부를 파일에다가 맵핑한다. 디스크에 있는 파일을 읽어오는 건 1번 방식과 똑같다.(Buffer cache에 읽어온다) Buffer cache에서 읽어온 것을 page cache로 copy를 함. 사용자 프로그램이 mmap된 영역에다가 메모리 읽고/쓰기 하듯이 요청을 하게 되면 read/wr..

디스크에 파일을 저장하는 방법은 크게 3가지가 있다. 디스크에 파일을 저장할 때는 동일한 크기의 섹터 단위로 나누어서 데이터를 저장하고 있다. 파일 시스템, 디스크 외부에서 볼 때는 각각의 동일한 크기의 저장 단위를 논리적인 블록이라고 부른다. 임의의 크기인 파일을 동일 크기의 블록 단위로 나누어서 저장하고 있다. (메모리 관리에서 페이징 기법과 유사) Contiguous Allocation 하나의 파일이 디스크상에 연속적으로 저장이 되는 방식이다. 디렉터리란 파일은 디렉터리 밑에 있는 파일들의 메타데이터를 내용으로 한다. Contiguous Allocation의 장단점 장점 빠른 접근 = Fast I/O 디스크 헤드가 한번 이동해서 한꺼번에 많은 데이터를 가져올 수 있다. 같은 트랙에 존재한다고 가정한..

File 정의 : 관련정보를 이름을 가지고 저장한다. 비휘발성 보조기억장치에 저장. 생성, 읽기, 쓰기, 삭제 파일은 여러 개의 바이트로 구성이 된다. 어느 위치를 읽는지, 쓰는지를 가리키는 포인터가 있다. 대개는 파일 읽으면 시작 부분을 읽게 되는데, 한번 읽고 나면 그 파일을 가리키는 포인터가 그다음 부분을 가리키게 된다. 쭉 읽게 되면 위치 포인터는 그다음 위치로 자동 이동을 한다. reposition(lseek) : 필요에 따라서 파일의 시작 부분 또는 현재의 위치 포인터 부분이 아니라 다른 부분부터 읽거나 쓰고 싶을 때. 그런 파일의 접근하고 있는 위치를 수정해 주는 연산. open : open을 하고 read, write을 해야 한다. (인터페이스가 이렇게 하도록 되어있다.) open은 dis..

어떤 걸 쫓아낼까? = 캐슁 기법 한정된 빠른 공간에 저장 후, 후속 요청 시 캐시에서 서비스함. cache memory, buffer caching, Web caching - 멀리 떨어져 있는 컴퓨터에서 꺼내오는데 시간이 걸리기 때문에 캐시를 사용 캐시 운영을 할 때, 시간 제약이 있다. Paging System에서 LRU, LFU 가능? page table에서 주소 변환을 할 때, 주소 변환은 하드웨어가 한다. (운영체제는 관여하는 일이 없다) 그러나 page fault가 발생하면 disk(i/o 발생)에 접근해야 하기 때문에, cpu의 제어권이 운영체제에게 넘어감. 과연 운영체제가 어떤 페이지가 얼마나 오래되었는지, 얼마나 참조되었는지 알 수 있을까? 결론은 운영체제는 알 수 없다이다.! 어떤 프로..

Virtual Memory 기법은 운영체제가 관리를 함. Demand Paging 요청이 있으면 그 페이지를 메모리에 올림. paging 기법은 대부분의 시스템이 사용하고 있다. 좋은 소프트웨어일수록 방어적으로 소프트웨어를 만듦. 방어적인 코드가 프로그램에서 대부분을 차지한다. 근데 방어적 코드는 거의 대부분 사용이 안되는데 한꺼번에 메모리에 올리면 메모리가 낭비가 된다. 그래서 필요한 page만 demand paging을 사용한다면 한정된 메모리를 더 잘 처리할 수 있다. 가장 필요한 부분은 demand paging에 의해 메모리에 올라간다. 그렇지 않은 부분은 swap area에 내려가 있는다. 사용하지 않는 영역 - logical memory에서 6, 7 page table의 entry는 주소공간의..

Segmentation segment table의 최대 entry개수는 프로그램이 사용하는 세그먼트 개수이다. 페이징 기법은 페이지의 개수가 백만개(굉장히 많다) 테이블을 위한 공간 낭비가 심하다. 장점 allocation 단점 protection sharing 세그먼트 실제 시스템을 운용해보면 개수가 작다. 테이블 메모리 낭비가 작다. 장점 protection sharing 단점 allocation Segment와 page를 혼합해보자 세그먼트 하나가 여러개의 페이지로 구성이 됨. 먼저 세그먼트에 대한 주소변환을 한다. STBR : 여기 레지스터에 세그먼트에 대한 시작위치가 저장되어 있다. 메모리에 올라갈 때는 page 단위로 쪼개져서 올라간다. 이렇게 하면 allocation 문제가 안생긴다! hol..

page table을 2단계만 쓰는 게 아니라 다단계를 쓸 수 있다. 프로그램의 주소공간이 넓기 때문에, 3단계, 4단계 여러 단계 page table을 사용하는 게 가능 page table을 위한 공간을 많이 줄일 수 있다. 그러나 한번 주소 변환을 하려면 page table을 여러 번 거쳐야 한다. page table이 물리적인 메모리상에 있기 때문에 메모리에 한번 접근하기 위해서(4단계 테이블 일 때) 주소 변환을 위해서 메모리에 4번 접근해야 한다. - ( 4회 주소 변환 ) 그리고 주소 변환을 한 다음에 실제로 원하는 데이터를 접근하기 위해서 또 메모리 접근을 해야 한다. - (실제 데이터 접근) 따라서 메모리 한번 접근을 하려면 총 5번의 메모리 접근이 필요하다. 그러나 대부분의 주소변환은 T..

Noncontiguous allocation page 프로그램을 구성하는 메모리를 동일한 크기의 page로 잘라서 각각의 page 별로 물리적 메모리의 적당한 위치에 올라갈 수 있게 해 준다. page table page 기법에서 주소 변환을 위해서 사용된다. 논리적인 page 개수만큼 entry(명부, 명단?) 이 존재한다. entry는 테이블(배열)에서 사용하는 용어이다. 테이블(배열)은 인덱스를 이용해서 곧바로 접근할 수 있는 자료구조이다. 각각의 논리적인 페이지들이 물리적인 메모리에서 어디에 올라가 있는지 위치를 저장함. 논리적 page 번호 물리적 page frame 번호 logical memory code , data , stack으로 구성됨. 중간에 메모리가 사용이 안되는 공간이 많이 존재한..