10분 테코톡 시청 후 작성했습니다.
https://www.youtube.com/watch?v=qxmdX449z1U
리눅스란?
- 리누스 토르발스가 개발한 OS
- 자유 소프트웨어와 오픈 소스 개발의 표본
- 다중 사용자, 다중 작업(멀티 테스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)
- 즉 서버에 적합한 운영체제이다.
메모리란?
- 넓은 의미로 기억 장치 전부
- 좁은 의미로 메인 메모리(RAM)
- 컴퓨터의 유일한 작업공간.(프로세스는 cpu에서 실행x 반드시 메모리에 적재 후 실행 가능)
- 주소덩어리이며 주소로 인덱싱하는 커다란 배열.
- 컴퓨터가 켜지면 메모리에 운영체제나 프로세스들이 적재되고 CPU를 점유할 기회를 노림.
- 메모리의 코드 -> 컴파일러(코드 주소 결정) -> CPU
- Symbolic Address : 메서드, 변수 등 코드각 프로그램마다 중복되는 논리주소를 가지고 있기때문에 가상주소라고도 부름
- Logical Address : 컴파일러가 변환시킨 숫자주소
- 논리주소 앞에 식별주소를 추가시킨 물리주소를 가지고 메모리에 적재.
- 하지만 CPU는 어떤 프로세스인지 알 필요 없기때문에 논리주소만 읽음.
- MMU(memory Management Unit)은 base register, 산술계산기, limit register가 존재.(하드웨어)
- CPU가 처리한 논리주소에 base register에 적힌 시작 주소를 더해 프로세스로 반환함.
- 그리고 이것의 타당성 여부는 Limit register가 판단함.
- 메모리 할당, swapping어떻게 할꺼냐?
- 페이징 기법. -> 순서 보장x, mmu 연산도 복잡
- paging table로 frame을 mapping함.(block map table-BMT)
- 행은 프로그램을 일정 크기로 자른 것. 프로그램당 행이 100만개.
- 이걸 CPU에 다 넣을 수 없음. 메모리에 page table을 저장해야함.
- valid, invalid는 메인메모린지, swap공간에 있는지 판단하는 bit.(어딨는지 인덱싱으로 검사함.)
- 물리 메모리공간 부족. -> 공통되게 사용하는 부분: read-only권한이 부여된 Shared Page로 사용함.
- 테이블과 page가 둘다 메모리에 있기땜누에 CPU는 조회를 위해 두번 접근해야함(두배로 느려짐)
- 이것을 해결하기 위한것이 TLB(Translation Look-aside Buffers) 캐시 메모리(하드웨어)
- TLB에 있는 주소라면 바로 Frame주소로 변환해 table을 부르지 않고 바로 page에 접근함.
리눅스 메모리 관리란?
- 리눅스가 메인 메모리(RAM)을 운영하는 방법을 총칭
- 작업공간을 필요로 하는 프로세스들을 위해 운영체제인 리눅스가 메인 메모리를 관리, 운영
- 가상메모리로 프로세스를 속이거나 하드디스크 입출력을 관리함.(프로세스는 운영체제에 속아 자신이 온전히 메모리에 있는줄 알고있음.)
- swap을 위한 입출력은 운영체제가 담당함.
- Linux는 보조메모리로 하드디스크나 SSD같은 보조 기억장치를 사용함.
- 실제 디스크를 마치 메모리처럼 사용하는 것을 `가상 메모리`라 하며 프로세스 입장에서는 디스크 공간이 아닌 실제 메모리로 인식.
- 리눅스에서 페이지는 4KB 단위.
- vmstat명령어로 메모리 사용률과 스왑아웃 발생빈도를 모니터링가능.(성능 최적화를 위해)
- free는 사용가능한 메모리량
- so는 swap-out
- vmstat [딜레이] [횟수] 로 출력 조절 가능. 횟수 생략하면 무한으로 출력됨.
- vmstat 1 >> log.txt 명령을 통해 리다이렉션을 걸면 파일 로그를 남길 수 있음
파일 캐시
- vmstst의 memory
- swpd는 사용하는 가상메모리 량. free는 사용가능한 메인메모리량
- buff, cashe는 파일 I/O 작업 발생을 막기위해 저장하는 곳.(파일 I/O는 디스크 리소스이므로 느림)
- buff는 파일 시스템의 meta-data와 관련된 블록들을 저장하는 캐시
- cache는 파일의 내용을 저장하는 캐시
- WAS서버의 파일 캐시 성능 개선 사례는 거의 의미가 없는 수준
- 때문에 파일 캐시는 전체 메모리 대비 최대 30%이하로 유지하는 것을 권고.
- DB 서버도 자체 파일캐시를 운용하기 때문에 작은 파일 캐시 설정을 권고.
더 공부할 것.
- 실무로 배우는 시스템 성능 최적화, 공룡책
- 이화여대 반효경 교수님 운영체제 강의
- virtual machine과 docker도 궁금.
- https://www.youtube.com/watch?v=W8q3TKB9Lbo
- https://www.youtube.com/watch?v=YCfP9I4K-8Y
Reference
'Computer Science > 운영체제' 카테고리의 다른 글
[OS] 메모리 관리 (0) | 2021.12.07 |
---|---|
[OS] 가상 메모리(Virtual Memory)와 페이징 (0) | 2021.10.21 |
[OS] 페이징과 세그멘테이션, 메모리관리 (0) | 2021.09.02 |
[OS] CPU Scheduling : 프로세스를 .CPU에 할당하는 방법들 (0) | 2021.08.30 |
[CS] Blocking vs Non-Blocking, Sync vs Async 제어권과 시간의 일치 (0) | 2021.07.22 |