본문 바로가기

학습 일지130

[OS] 스레드 스레드 프로세스 내에서 실행되는 실행 흐름의 단위 각각 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택을 가질 수 있다. 멀티프로세스와 멀티스레드 멀티프로세스와 멀티스레드에 가장 주된 차이점은 자원 공유 여부이다. 프로세스간에는 기본적으로 자원을 공유하지 않음 스레드 간에는 프로세스의 자원(입출력장치, 열린 파일 등)을 공유 스레드 간에는 프로세스의 자원을 공유하기 때문에 문제가 발생했을 경우 모든 스레드에 문제가 발생한다. 멀티 프로세스와 멀티 스레드의 차이 예 웹브라우저의 새 탭 생성을 통해 만든 탭이 모두 개별 프로세스로 만들어졌다면 탭에서 문제가 생겼을 때 다른 탭에는 영향을 주지 않는다. 하지만 각 탭을 프로세스가 아니라 스레드로 만들어졌다면 하나의 탭에 문제가 생긴다면 모든 탭이 영향에 .. 2023. 9. 8.
[OS] 프로세스 생성과 상태 모든 프로세스는 상태를 가지고 있다. 대표적인 프로세스 상태 생성 상태 준비 상태 : 당장 실행이 될 수 있지만 실행 순서를 기다리고 있는 상태 실행 상태 : CPU 자원을 할당 받아서 실행하고 있는 상태 대기 상태 : 입출력장치를 사용 요청했을 때 주로 대기상태가 된다. 준비상태와 다른 점은 대기 상태는 어떤 이벤트나 조건이 충족되기를 기다리는 상태라는 것 종료 상태 : PCB가 폐기되고 자원을 반납한 상태 준비상태에서 CPU 자원 할당을 기다리게 된다. CPU자원을 할당 받았다면 디스패치가 되고 실행상태가 된다. 실행상태인 프로세스가 할당된 CPU 이용시간이 끝났다면 타이머 인터럽트, 타임아웃 이라고 한다. 타임 아웃된 프로세스는 다시 준비상태가 된다. 실행상태에서 입출력 명령어를 만났다던지와 같은 .. 2023. 9. 7.
[OS] 커널 영역과 사용자 영역의 프로세스 프로세스 프로세스란 실행중인 프로그램으로 같은 프로그램도 별도의 프로세스가 될 수 있다. $ ps 명령어를 통해서 프로세스를 확인할 수 있다. 프로그라운드 프로세스 : 사용자와 직접적으로 상호작용하고 있는 프로세스 백그라운드 프로세스 : 사용자와 직접적으로 상호작용하고 있지 않은 프로세스 서비스 : 백그라운드 프로세스의 일종으로 사용자와 직접적으로 상호작용하지 않지만 묵묵히 자신의 일을 수행하는 프로세스 $ systemctl list-units --type service : 현재 시스템에서 실행 중인 서비스를 확인 가능 프로세스제어블록(PCB) 모든 프로세스마다 PCB(프로세스제어블록)라고 하는 자료가 할당되어 있고 운영체제는 PCB를 통해 프로세스를 식별한다. PCB는 운영체제의 커널 영역 내에 할당되.. 2023. 9. 7.
[OS] strace기반 시스템 콜 관찰하기 strace : 시스템 콜을 추적하기 위한 도구 pid : 실행중인 프로세스에 할당되어있는 고유번호 strace 기본 사용법 $ strace $ strace -p 시스템 호출 결과를 콘솔에 출력하지 않고 파일로 저장 $ strace -o .txt 생성된 파일을 다음과 같이 열어볼 수 있음. 시간과 시스템 호출 결과 출력 $ strace -t ls : 타임스탬프 $ strace -tt ls : 타임스탬프를 밀리세컨드까지 보여줌 $ strace -T ls : 각 시스템 호출 소요 시간 시스템 콜 요약 결과 출력 $ strace -c $ whoami : 현재 사용자의 이름을 출력 실행 파일의 시스템 호출결과 필터링 $ strace -e trace=opne,read ls 프로그램이 실행되는 과정에서 시스템 콜은.. 2023. 9. 7.