TIL 11월 24일 2023년

ORCASUIT·2023년 11월 26일

날짜 : 2023-11-24 10:59

주제 : #PintOS


개요

"Pintos 프로젝트 1: 스레드" 과제는 기본 스레드 시스템의 기능을 확장하여 동기화 문제에 대한 이해를 높이는 것을 목표로 합니다. 이 작업은 주로 threads 디렉토리와 일부 devices 디렉토리에서 이루어집니다. 스레드 생성, 완료, 간단한 스케줄링, 그리고 세마포어, 락, 조건 변수, 최적화 장벽과 같은 동기화 기본 요소의 코드를 읽고 이해해야 합니다.

주요 포인트는 다음과 같습니다:

  • 스레드 메커니즘: 컨텍스트 전환, 스레드 생성 및 완료.
  • 동기화: 세마포어, 락 등을 사용한 스레드 동기화.
  • 디버깅: GDB를 사용하여 컨텍스트 전환을 추적하고 스레드 상태를 이해.
  • 소스 파일: threads와 devices 디렉토리의 파일, 특히 thread.c, synch.c 및 timer.c 파일에 익숙해짐.
  • 주의사항: 스레드당 고정 크기 실행 스택으로 인한 스택 오버플로우에 주의.

주요 디렉토리와 파일은 다음과 같습니다:

  • build: 컴파일된 바이너리와 오브젝트 파일이 저장되는 디렉토리입니다.
  • devices: 장치 드라이버 관련 코드가 들어 있는 디렉토리입니다.
  • lib: 표준 라이브러리와 커널 내부에서 사용되는 기타 라이브러리 코드가 있는 디렉토리입니다.
  • tests: Pintos의 테스트 케이스가 있는 디렉토리입니다.
  • threads: 스레드 생성, 스케줄링, 동기화를 위한 코드가 들어 있는 핵심 디렉토리입니다.
  • kernel.bin, kernel.o, loader.bin: 커널 바이너리 파일 및 오브젝트 파일입니다.
  • Makefile, Make.vars, targets.mk: 빌드 시스템과 관련된 메이크 파일입니다.
  • init.c, interrupt.c, malloc.c, mmu.c, palloc.c, synch.c, thread.c: 커널의 초기화, 인터럽트 처리, 메모리 관리, 동기화, 스레드 관리를 위한 C 소스 코드 파일입니다.
  • intr-stubs.S, kernel.lds.S, loader.S, start.S: 부트로더 및 초기 설정, 인터럽트 처리를 위한 어셈블리 코드 파일입니다.

출처(참고문헌)

연결문서

0개의 댓글