꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

운영체제 (OS)

프로세스 총 정리 및 성능 개선 방법

gold_dragon 2021. 4. 21. 19:59

패스트 캠퍼스 운영체제 강의 참조

처음에 컴파일을 합니다. 그러면 실행 파일이 만들어집니다. 일반 사용자가 이 실행 파일을 생성하기 위해서는 쉘을 사용합니다. 프로세스 구조(text, data, heap, stack) 맞춰서 데이터가 들어갑니다. 믈론 바로 실행되는건 아닙니다. 프로세스가 ready state에 위치하게 됩니다. 하드웨어로 부터 일정 시간 마다 타이머 인터럽트를 운영체제에 알려줍니다. 인터럽트가 일어나면 CPU는 사용자 모드를 커널 모드로 바꿔주고 IDT에서 0x80에 해당하는 주소(함수)를 찾아서 실행합니다. 그에 해당하는 함수를 실행하게 됩니다. ready state에서 running state로 바뀌게 되면서 이전에 running state에 있던 프로세스의 PCB 정보를 메인 메모리에 저장하고 해당 프로세스 PCB 정보를 메인 메모리에서 로드합니다. 그러면서 text 영역에 있는 코드를 CPU에서 실행하게 됩니다.

 

main 함수로 들어가서 int fd 변수를 선언하게 되는데, stack 영역에 main 함수와 fd 변수가 저장됩니다. 다음에 open 함수를 실행하게 되는데, 시스템 콜을 호출하게 됩니다.  그 후 커널 모드로 전환되면서 open 함수를 처리하는 sys_open 커널 함수를 호출하게 됩니다. 그러면서 running state에서 waiting state로 바뀌게 됩니다. CPU에 처리가 완료됐다 알리면 다시 인터럽트가 발생하고 다시 커널 함수를 호출하게 되는데, 해당 함수의 역할은 waiting state에서 ready state로 바꿔주게 됩니다. 다시 running state로 바뀌면서 다음 코드를 실행하게 됩니다.

'운영체제 (OS)' 카테고리의 다른 글

스레드 동기화 문제  (0) 2021.04.22
스레드  (0) 2021.04.21
프로세스간 커뮤니케이션 - signal과 socket  (0) 2021.04.20
IPC 기법 (1)  (0) 2021.04.19
프로세스간 커뮤니케이션  (0) 2021.04.19