핀토스에는 OS를 본뜬 정말 많은 프로그램이 존재한다.
main 프로그램에서
thread 사용을 위한 초기화 작업을 진행하거나,
각 메모리 사용을 위한 초기화 작업을 진행한다.
또한 각 챕터별 과제에서 사용할 기능 및 장치도
고유한 프로세스 플로우가 존재한다.
그런데 인터넷에서 구할 수 있는 자료는 전부 다 소스코드로만 이뤄져 있어서,
각 과제를 제대로 이해하기 위해서는
코드를 보고 플로우 차트를 직접 그려야 한다 생각했다.
그래서 여러 플로우 차트 중, 시스템 플로우 차트를 사용해
각 기능들을 이해해보려고 한다.
플로우차트
어떤 일을 처리하는 과정을 간단한 기호와 화살표로 도식화한 그림.
주로 컴퓨터 프로그래밍에서 프로그램이 돌아가는 과정을 그림으로 나타낼 때 사용되는 일종의 블록선도이다.
각 단계는 정해진 다이어그램 기호에 맞춰 표현하며
진행 순서는 왼쪽에서 오른쪽으로 위에서 아래로 화살표를 이용하여 표현한다.
플로우차트는 다이어그램을 활용해 복잡한 프로세스를 이해하기 쉽도록 문서화하기 위해 주로 사용된다.
사용법
- 모서리가 둥근 사각형
- 플로우 차트(여기서는 프로세스로 간주)의 시작과 끝을 의미합니다.
- 그래서 terminal(단말) 이라고도 불립니다.
- 화살표
- 각 기호 간 연결을 나타냅니다.
- 평행사변형
- 데이터의 입/출력을 나타냅니다.
std in, std out이 보통 대표적이다.
- 직사각형
- 기호 내부에 처리 과정을 표시합니다.
- 즉, 모든 처리 과정에 대해 기술할 수 있습니다.
- 예시) 고객이 입력한 id 결과와 기존 데이터의 중복을 확인한다.
- 마름모
- 프로그램에서 조건문 및 분기 과정에 해당합니다.
- 조건에 따라 분기되는 Case를 표시합니다.
- 아래가 물결형태인 직사각형
- 서류나 문서의 인쇄 및 출력을 나타낼 때 표현합니다.
- 보통 사용자에게 문구를 출력하는 과정을 나타낼 때 사용합니다.
PlantUML
다이어그램을 빠르게 작성하기 위한 오픈소스 프로젝트입니다.
현재 IDE(프로그래밍 작업환경)을 vscode로 사용하고 있는데,
vscode의 extension(추가 기능)으로 플로우 차트를 그릴 수 있습니다.
PlantUML이라는 extension을 사용하면 됩니다.
해당 extension은 문법을 지켜 프로그래밍하면
바로 플로우 차트를 그려주기 때문에 간편해서 사용하도록 하겠습니다.
시스템 플로우 차트 예시
저는 C 언어로 이뤄진 프로그램의 실행 과정을 이해하기 위해
시스템 플로우 차트 형식으로 흐름도를 그려보았습니다.
... 상당히 기네요.
정리하자면,
- BSS 초기화
- 명령 인자 읽어들인 후 option 파싱
- 스레드 초기화
- 메모리 시스템 초기화
- (옵션) 유저 프로그램 받는 부분 초기화
- 인터럽트 핸들러 초기화
- (옵션) 유저 프로그램의 예외 및 시스템 콜 부분 초기화
- 스레드 스케쥴러 구동 및 인터럽트 받을 수 있게 설정
- (옵션) 파일 시스템 초기화
- (옵션) 가상 메모리 초기화
- 부트 완료 메세지 출력
- 명령 인자가 없어질 때까지 실행 ( run_actions (char** argv) )
- 종료
정도가 되겠습니다.
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 |