← All Posts

[TIL] 261008 공부기록

프로그램 실행 공부하기

TIL#

오늘은 오전에 발표준비 최종 리허설을 끝내고, 오후에는 발표를 했다. 저번보다는 덜실수 하긴했지만 아쉬웠던건 과제에 좀 많이 벗어났다 싶은 느낌을 티타임때 듣고 아차 싶었다. 호기심에 시작해서 너무 파서 벌어진일 같다. 하지만 얻은 교훈도 있으니 이정도면 될까?? 싶지만 담주차부턴 다시 원래로 돌아가야될듯 싶다

배운점#

오늘은 핀토스 과정 시작이라서 과제를 보게됐는데 용어가 전부 생소해서 읽어도 무슨말인지 이해하기 어려웠다. 하지만 동석코치님의 키워드들을 먼저 이해하면 내일 수업때 조금이나마 얻어갈수있지않을까? 싶다. 그 키워드공부한것들을 설명하려고 한다.

주로 스레드는 프로그램의 실행의 작업단위인데 핀토스 과제에서는 핀토스에서 커널의 스레드 시스템을 다루는 것이다

먼저 cpu 의 실행흐름을 생각해봐야되는데 cpu는 한순간에 하나의 스레드를 실행하는데 스케줄하는 다음 누구를 cpu에서 실행할지 결정해야된다 이번과제의 핵심이라고도볼수있을것같다

핀토스 커널이 cpu실행단위를 스레드 구조체로 관리하는데 먼저 컴퓨터가 켜져서 핀토스가 실행되고 쓰레드가 돌아가는 과정을 설명하겠다

os는 컴ㅍ터의 하드웨어와 프로그램 사이를 관리해주는 시스템이고 커널은 하드웨어를 직접관리하고 프로그램에 필요한 자원을 제공하는 핵심 소프트웨어다

여기서 os이미지 로드라는 키워드가 나왔는데 개념은 메모리를 올려서 실행할수있도록 만들어진 os 바이너리다

핀토스 커널을 컴파일하고나면 커널 바이너리로 가고 그다음 os이미지차례가 된다 여기서 os이미지를 부팅과정에서 메모리에 올리는것이다.

왜 로드가 필요할까?

cpu는 디스크에 있는 프로그램을 직접 실행하는게 아니고 메모리에 올라온 명령어를 가져와서 실행하는것이다..

결국 디스크-> 메모리 -> cpu ->커널 실행이 순서다

다음 스레드 상태가 약 4가지가있는데 running은 현재 cpu를 실행중인 상태이고 ready는 준비상태인데 아직 cpu는 못받은 상태다. blocked는 어떤 이벤트를 기다리면서 실행할수없는 상태이고 dying는 스레드가 종료상태다

여기서 스케줄링이라는 개념을 알아야되는데 스케줄러는 지금 어떤 스레드를 실행할지 결정하는것이고…또 인터럽트라는 단어가 많이 나오는데 cpu가 잠깐 하던일 멈추고 다른 중요한 일을 처리하도록 하는 신호다 타이머 인터럽트는 결국 일정 시간 간격마다 인터럽트를 발생시키는 장치인데 이게 왜 중요한면 스레드하나가 cpu를 계속 차지하고있을때 스레드 다음것도 실행해야되는데 cpu가 그만하고 이제 다음 스레드한테 cpu넘겨라고 알려줘야된다. 이때 사용하는것이고 결국 cpu한테 알려준다고 생각하면 된다 cpu한테 신호를 주면 커널이 이걸 이용해서 현재 스레드가 cpu너무 오래쓰나? 다른 스레드에게 넘겨야되나 판단할수있다

느낀점#

오늘 주간 회고를 했는데 팀원에게 좋은 말들을 정말 많이 들었다. 아마 정글 생활외에서도 협업을 해야된다면 모르는것은 과감하게 물어보고, 내가 모르는것이 무엇인지를 알아야된다는것도 좀 중요하다는걸 이번에알았던것같다.