오늘 프로그램, 프로세스, 스레드 개념에 대해 배웠다.
셋 다 들어보기는 많이 들어봤는데, 아니 또 막상 배우니까 너무 생소한 것이 아닌가..
현재 나의 상황
국비지원 K-digital Training 과정으로 에티버스러닝에서 수업을 듣고 있는데, 주중의 반은 팀프로젝트를 만들고 있고 반은 네트워크프로그래밍 수업을 듣고있다. 나는 AI를 맡아서 만들고 있는데 너무 생소하고 진도가 안 나가서 오늘 수업만을 기다리고 있었다. 그런데... 오늘 더 어려운 것이 아닌가. 멘탈 와사삭
내 멘탈 붙잡기 위해서 오늘 수업 복습을 해보고자 한다. 하지만 나의 필기가 제대로 되어 있지 않아, 'TCP/IP 소켓프로그래밍' 책과 '그림으로 쉽게 배우는 운영체제' 인강 참고해서 내가 이해한 대로 아래 추가 정리해보았다.
프로그램
- 윈도우에선 .exe
- 저장장치에 실행파일로 존재하는 정적인 개념
프로세스
- 프로그램 만들면 그건 파일, 그게 메모리에 올라가서 CPU가 조금씩 가져서 처리하는게 프로세스
- = 하드디스크에 저장된 프로그램이 메모리에 올라갔을 때 실행중인 상태
- = 프로그램과 비교할 땐 프로세스가 메모리도 사용하고, CPU도 사용하고, 필요에 따라 입출력도 하는 동적인 개념
- 스레드랑 비교했을 땐 프로세스가 정적인 개념인데, 얘는 코드, 데이터, 리소스를 파일에서 읽어서 메모리영역에 담고 있는 컨테이너 역할을 해서 정적인 개념으로 본다.
프로세스 구조
코드 자신을 실행하는 코드 저장되어 있음
데이터 전역변수 스태틱 변수
스택 지역변수, 함수호출 시 필요한 정보
힙 동적할당
- PCB(Process Control Block)? 운영체제가 만드는 건데, 프로세스가 만들어지면 프로세스의 정보를 갖고있는 PCB를 만든다. PCB는 연결리스트로 저장된다.
쓰레드
- CPU 시간을 할당 받아 프로세스 메모리 영역에 있는 코드를 수행하고 데이터를 사용하는 실행 흐름으로 동적인 개념!
- 프로세스 내에 존재하는 것으로 1개 이상 존재 가능함
- 한 프로세스 내의 스레드들은 PCB, DATA, HEAP영역 공유, 스택은 스레드 마다 갖고 있음
- 프로세스 내에 쓰레드가 여러개 있으니 쓰레드를 구분할 수 있도록 쓰레드 ID도 부여하고, 쓰레드를 컨트롤 할 수 있도록 TBP(Thread Control Block) 개념이 있다.
- 안정성: 하나의 프로세스 내에 여러개의 쓰레드가 존재해서 프로세스가 문제 생기면 그 안의 쓰레드들이 문제가 생김..
그럼에도 개념이 연결 끊긴 리스트들 같이 머리에 떠다녀서 챗지피티에게 간략히 정리해달라고 부탁했다.
운영체제 책 추천
강사님이 운영체제 책을 두권 추천해주셨다. 둘다 당장 사기엔 비싸서 한권만 주문해버림!
'네트워크' 카테고리의 다른 글
[네트워크] TCP와 UDP의 특징 (0) | 2024.08.02 |
---|---|
[에티버스러닝] select함수 이용해서 여러 명 접속 가능한 TCP 에코 서버 (2) | 2023.06.01 |
TCP 서버/클라이언트 두자리 자연수 합 구하는 연산식 통신 (1) | 2023.05.19 |
TCP 서버 / 클라이언트 함수 (1) | 2023.05.19 |
TCP/IP 프로토콜 (3) | 2023.05.11 |