프로세스

• 격리(isolation)로부터 영감을 받음
메모리 isolation
CPU isolation
• 스레드(threads) + 주소공간(address space)
• 마치 하나의 가상 머신
• 실제 프로세스를 활용해 컨테이너 생성
• 프로세스는 자신이 CPU와 메모리를 소유하고 있다고 환상
• 서로 다른 프로세스에 영향 주지 않는다

스레드

• 모든 프로세스에 1개 이상 존재
• 상태를 가지고 실행되고 있는 프로그램
• 멈추고(스택에 저장) 재 실행(스택에서 CPU 레지스터로) 가능
• 다중 스레드간에는 주소 공간(address space)을 공유

메모리 관련 요약

• 주소 공간(Address Space)
• 프로세스 메모리 - code, variables, heap, stack
• 리눅스 커널 코드
mm_struct + page table
• 접근 제어
• 다른 프로세스

• CPU에는 MMU가 존재

• MMU는 모든 주소를 변환
• VA -> PA
• 페이지 테이블을 통해

CPU 관련 요약

• 모든 CPU는 주기적으로 "clock interrupt 또는 timer interrupt"를
제공
• 이를 통해 현재 프로세스를 강제로 세울 수 있음.
• 커널 모드에서 수행

• 필요 시 커널은 이 정보를 이용해서스레드간 스위칭 제공

• 혼자 도는 긴 프로그램과 잘 못 구현된 무한 루프 방지 가능

• CPU 레지스터
• 커널은 문맥 교환(context switch)시레지스터를 save/restore

두 스레드간 스위치(문맥교환: contextswitch) 요약

User -> kernel (system call or timer)
Kernel -> context switch
Kernel -> user

프로세스 스케줄러 트레이스

• 프로그램이 어떻게 동작하는지 확인 필요

• 리눅스 프로세스 관리 수업은 trace-cmd/kernelshark 활용

• trace-cmd
• ftrace frontend
• 커널 트레이스 유틸리티

• kernelshark
• trace-cmd 결과물 분석 유틸리티

trace-cmd + kernelshark 설치
• sudo apt-get install trace-cmd
• sudo apt-get install kernelshark

사용법

• $ trace-cmd [...]

• record
• record a trace into a trace.dat file

• list
• the available events, plugins or options restore

trace-cmd 실행

sudo trace-cmd record -p function -l 'sched*' -e sched -e
irq ./toy_system

결과물 : trace.dat

실습 결과

실습 조건

이벤트 추가 syscalls
• sudo trace-cmd record -p function -l 'sched*' -e sched -e irq -e
syscalls sleep 10
• 크롬 또는 파이어폭스 실행
• 10초 후 자동 종료
• kernelshark로 분석

크롬 관련 프로세스가 굉장히 많이 나온다.

그 이유는 멀티 프로세스 아키텍처라고 한다.

멀티 프로세스 아키텍처에서는 각 탭이나 확장 프로그램, 플러그인 등이 독립적인 프로세스로 실행됩니다. 각각의 프로세스는 별도의 PID(Process ID)를 가지며, 이를 통해 운영체제에서 구분됩니다. 각 프로세스는 메모리 공간을 독립적으로 할당받아 동작하므로 하나의 탭에서 문제가 발생하더라도 다른 탭이나 브라우저 전체에 영향을 미치지 않는 장점이 있습니다.

따라서 크롬을 실행하면 브라우저 자체를 위한 "브라우저 프로세스"와 각 탭, 확장 프로그램, 플러그인을 위한 "렌더러 프로세스" 등 다양한 프로세스가 생성됩니다. 이로 인해 크롬 브라우저를 실행할 때 많은 수의 PID가 나타날 수 있습니다.

PID가 많아진다고 해서 반드시 성능에 악영향을 미치는 것은 아닙니다. 멀티 프로세스 아키텍처는 분리된 환경에서 각 프로세스가 작업을 처리하므로 크롬 브라우저가 더욱 안정적이고 빠르게 동작할 수 있습니다. (인터넷 검색)

0개의 댓글