IT 56

[Heap] ptmalloc2(pthread malloc 2)

Memory Allocator의 일종리눅스에서 사용됨, GLibc에 구현됨목표메모리의 효율적인 관리1. 메모리 낭비 방지▶ 메모리 할당 요청이 발생하면먼저, 해제된 메모리 공간 중에서 재사용할 수 있는 공간이 있는지 탐색여기에 요청된 크기와 같은 크기의 메모리 공간이 있다면 이를 그대로 재사용 ▶ 작은 크기의 할당 요청이 발생하면해제된 메모리 공간 중 매우 큰 메모리 공간이 있는 경우 그 영역을 나누어 주기도2. 빠른 메모리 재사용 ▶ 메모리 공간을 해제할 때, tcache 또는 bin이라는 연결 리스트에 해제된 공간의 정보를 저장해둠 이유: 운영체제가 프로세스에게 제공해주는 가상 메모리 공간은 매우 넓으므로,특정 메모리 공간을 해제한 이후에 이를 빠르게 재사용하려면 해제된 메모리 공간의 주소를 기억하고..

WSL 활성화 ↔ VT-x/EPT or AMD-V/RVI 활성화 전환

WSL 활성화해당 VM이 위치한 폴더의 .vmx 파일 >다음 라인 추가: hypervisor.cpuid.v0 = "FALSE" windows 기능 켜기/끄기 >"Hyper-V"와 "Windows Subsystem for Linux" 켜기 VMware Workstation >Edit > Preferences > Display tab > "Accelerate 3D graphics" 활성화Settings > Processors tab > "Virtualize CPU performance counters"와 "Virtualize Intel VT-x/EPT or AMD-V/RVI" 끄기 관리자 권한으로 PowerShell >dism.exe /online /enable-feature /featurename:Virt..

IT/기타 2024.07.23

VMware Ubuntu 브릿지 설정 방법

나는 host machine = Windows 11, guest virtual machine = Ubuntu 22.04였다. 1. (확실치는 않지만) host machine에서제어판 > 네트워크 및 공유 센터 > 어댑터 설정 변경 > 현재 연결된 것 우클릭 > 속성 > VMware Bridge Protocol 체크 2. host machine에서VMware Workstation 열기 > 해당 virtual machine의 Settings > Network Adapter > Network connection 섹션에서 Bridged 선택  3. 해당 virtual machine 들어가서아래 명령어 실행ip addr 만약 거기서 ens33에 "DOWN"으로 되어있다면 -> 아래 명령어 실행sudo ip lin..

IT/기타 2024.07.20

[Windows test mode]

>> Test mode (Test Signing Mode) 신뢰할 수 있는 certificate authority(Microsoft 등)가 전자서명해주지 "않은" driver/system file들도 설치/실행 할 수 있다. >> Test mode 끄고 켜는 방법 1. secure boot 해제 test mode의 on off는 secure boot이 해제된 상태에서만 가능하므로 해제한다. 노트북 켠 뒤, 부팅 다되기 전에 F8 눌러 Advanced startup options 진입 > Troubleshoot 클릭 > Advanced options 클릭 > UEFI Firmware Settings 클릭 > Boot > Secure boot control (삼성 노트북 기준) 2. test mode on/..

IT/기타 2024.07.15

[Heap] chunk의 구조, free list, malloc(), free()

heap은 variable size memory로서, 프로그램이 실행되는 도중 동적으로 할당/해제되는 메모리 영역이다.malloc()으로 allocate되고 free()로 deallocate된다. chunk의 구조header + chunk header8byte  chunk chunk는 사용되고 있을 때와 free된 때의 모습이 아래처럼 다르다.   free chunk의 double-linked list free chunk끼리는 double-linked list로 이어져 있다.(그림 상에는 single-linked처럼 그려져있지만 아무튼 실제로는 double-linked이다.)  포인터 관계를 자세히 보면 아래와 같다.  malloc()malloc(100)을 통해 chunk를 생성하면 아래와 같이 되며 1..

[File System] LFS(Log-structured File Systems)

Sequential Write: 모든 update는 disk에 sequential하게 write한다.: data block을 disk에 write할 때, sequential하게 Inode와 Inode map도 disk에 write한다.  다만 Sequential write만으로는 최대로 effective하지는 않아서, write buffering 방식도 활용한다. Write buffering: one large write : disk에 write하기 이전에, LFS는 메모리의 update를 추적하고 있다가,그러한 update가 충분한 개수가 모이면 (이것이 segment이다),이들을 disk에 "한꺼번에" write함으로써, disk의 활용이 좀더 효율적이게 된다. ▶example개별 update는 두번..

[File System] Crash Consistency: FSCK and Journaling

💡write() 이후 과정과 crash workload example사용자가 write()를 호출함으로써 이미 있는 파일에다가 data block 하나를 추가하는 workload에서는Data block 추가, Inode 업데이트, Data bitmap 업데이트가 이뤄져야 한다.이들은 disk로 바로 write되지 않고, 일단 main memory의 page cache나 buffer cache에 있다가, file system이 최종적으로 disk로의 write를 결정하면 그때 disk로 write된다. crash cases그럼 crash 상황이란 즉, 위 3개 중 0개 or 1개 or 2개 성공의 상황일 것이다.이중 애매하게 1개 or 2개만 성공하는 경우 뭔일이 나는지 살펴보자. ▶1개만 성공여기에도 ..

[File System] FFS(Fast File System)

이전 방식 (VSFS)의 문제점VSFS는 disk를 random access memory로서 다뤘기에, 데이터가 여기저기에 퍼져버림. 이 때문에,한 파일의 inode와 data block이 너무 멀리 있어서,파일의 inode를 먼저 읽고 이후에 data block을 읽는 아주 일반적인 동작마저도 상당히 expensive함. 또한, 논리적으로는 연속적인 하나의 파일인데도 물리적으로는 분산돼있을 수 있어서 (아래 그림 참고),sequential read/write가 불가능하고 disk를 앞뒤로 왔다갔다해야 하니, 성능이 매우 떨어짐. 따라서,disk 내의 데이터 구조를 어떻게 organize해야 성능을 높일 수 있을지가 문제였다. FFS의 Cylinder groupFFS는 disk의 물리적 특성을 고려한다...

[File System] VSFS(very simple file system)

overall organization▶block: 위 사진에서 각각의 작은 네모 하나. 4kB  ▶Data region: user data 저장  ▶Inode: 파일의 주요 metadata 정보 (파일이 나뉘어있는 data block이 어떤건지, 파일 크기, 소유자, 파일에 대한 접근 권한과 접근/수정 시간 등)를 track하기 위해 이들이 저장된 곳- inode number에 의해 위치가 계산되어 refer- 위 사진의 Inode table에서 주황색 네모 하나. 256B- 위 사진 기준으로는 Inode가 총 80개이므로, 가능한 최대 파일 개수도 80개이다. ▶Inodes(Inode table): Inode의 array임 ▶Bitmap: Inode나 Data block의 free(0) / alloca..