OS/PintOS

PintOS 프로젝트 - 프로그램 이해를 위한 플로우 차트 그리기

:) :) 2024. 9. 3. 15:39

핀토스에는 OS를 본뜬 정말 많은 프로그램이 존재한다.

 

main 프로그램에서

thread 사용을 위한 초기화 작업을 진행하거나,

각 메모리 사용을 위한 초기화 작업을 진행한다.

 

또한 각 챕터별 과제에서 사용할 기능 및 장치도

고유한 프로세스 플로우가 존재한다.

 

그런데 인터넷에서 구할 수 있는 자료는 전부 다 소스코드로만 이뤄져 있어서,

각 과제를 제대로 이해하기 위해서는

코드를 보고 플로우 차트를 직접 그려야 한다 생각했다.

 

그래서 여러 플로우 차트 중, 시스템 플로우 차트를 사용해

각 기능들을 이해해보려고 한다.

 

플로우차트

어떤 일을 처리하는 과정을 간단한 기호와 화살표로 도식화한 그림.

주로 컴퓨터 프로그래밍에서 프로그램이 돌아가는 과정을 그림으로 나타낼 때 사용되는 일종의 블록선도이다.

 

각 단계는 정해진 다이어그램 기호에 맞춰 표현하며

진행 순서는 왼쪽에서 오른쪽으로 위에서 아래로 화살표를 이용하여 표현한다.

 

플로우차트는 다이어그램을 활용해 복잡한 프로세스를 이해하기 쉽도록 문서화하기 위해 주로 사용된다.

 

 

 

 

사용법

https://images.velog.io/images/sunnywhynot/post/743eb6f9-316c-44af-9494-31332a7b93a9/f1.png
https://hello-woody.tistory.com/14#google_vignette

  • 모서리가 둥근 사각형
    • 플로우 차트(여기서는 프로세스로 간주)의 시작과 끝을 의미합니다.
    • 그래서 terminal(단말) 이라고도 불립니다.
  • 화살표
    • 각 기호 간 연결을 나타냅니다.
  • 평행사변형
    • 데이터의 입/출력을 나타냅니다.
    • std in, std out이 보통 대표적이다.
  • 직사각형
    • 기호 내부에 처리 과정을 표시합니다.
    • 즉, 모든 처리 과정에 대해 기술할 수 있습니다.
      • 예시) 고객이 입력한 id 결과와 기존 데이터의 중복을 확인한다.
  • 마름모
    • 프로그램에서 조건문 및 분기 과정에 해당합니다.
    • 조건에 따라 분기되는 Case를 표시합니다.
  • 아래가 물결형태인 직사각형
    • 서류나 문서의 인쇄 및 출력을 나타낼 때 표현합니다.
    • 보통 사용자에게 문구를 출력하는 과정을 나타낼 때 사용합니다.

 

PlantUML

다이어그램을 빠르게 작성하기 위한 오픈소스 프로젝트입니다.

 

현재 IDE(프로그래밍 작업환경)을 vscode로 사용하고 있는데,

vscode의 extension(추가 기능)으로 플로우 차트를 그릴 수 있습니다.

PlantUML이라는 extension을 사용하면 됩니다.

 

해당 extension은 문법을 지켜 프로그래밍하면

바로 플로우 차트를 그려주기 때문에 간편해서 사용하도록 하겠습니다.

 

 

시스템 플로우 차트 예시

저는 C 언어로 이뤄진 프로그램의 실행 과정을 이해하기 위해

시스템 플로우 차트 형식으로 흐름도를 그려보았습니다.

 

pintos main 함수 코드를 플로우 차트로 나타낸 결과

 

... 상당히 기네요.

정리하자면,

 

  1. BSS 초기화
  2. 명령 인자 읽어들인 후 option 파싱
  3. 스레드 초기화
  4. 메모리 시스템 초기화
  5. (옵션) 유저 프로그램 받는 부분 초기화
  6. 인터럽트 핸들러 초기화
  7. (옵션) 유저 프로그램의 예외 및 시스템 콜 부분 초기화
  8. 스레드 스케쥴러 구동 및 인터럽트 받을 수 있게 설정
  9. (옵션) 파일 시스템 초기화
  10. (옵션) 가상 메모리 초기화
  11. 부트 완료 메세지 출력
  12. 명령 인자가 없어질 때까지 실행 ( run_actions (char** argv) )
  13. 종료

정도가 되겠습니다.

 

 

 

Ref.

 

플로우 차트 의미와 종류

플로우 차트란?"흐름도", "순서도"로 불리는 플로우 차트(Flow Chart), 플로우 차트란 무엇이며 언제 사용하는 걸까요?플로우 차트란? 업무를 처리하는 과정을 기호나 도형으로 표현한 것입니다. 알

hello-woody.tistory.com

 

 

[의사코드와 흐름도] 프로그램 설계 방법 및 예제

의사코드 작성 및 uml 기본 개념과 vs code extension을 이용한 예제

velog.io

 

 

UIUX : 앱 서비스 설계 - 플로우차트 작성법

신규 앱 서비스를 기획한다면 제일 먼저 하는 일은 요구사항 정의와 이를 해결하기 위한 기능 명세서를 작성하는 것일 것이다. 이 두가지 작업이 완료되면 본겨적인 서비스 개발을 위해서 사용

yeon-design.tistory.com

 

 

순서도

파일:순서도.png 1~100까지 짝수의 합이 변수 S에 저장되는 프로그램의 순서도 예시 順 序 圖 / flowc

namu.wiki

 

'OS > PintOS' 카테고리의 다른 글

[Pintos] Priority Scheduling  (1) 2024.09.05
[Pintos] Alarm Clock  (1) 2024.09.05
[Pintos] project1: Threads 플로우 차트  (3) 2024.09.03