CS 공부 1(컴퓨터,SW)

RedNine·2023년 9월 22일
0

cs공부

목록 보기
1/10

🍳프로그램, 프로세스, 스레드

  • 프로그램은 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태이다.
  • 프로세스는 자원을 할당받는 작업의 단위이다.
  • 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이며, 스레드는 자원을 공유한다는 점이 차이점이 있다.
  • 참고 url : 프로세스와 스레드의 차이

프로세스와 스레드의 차이점은?
운영체제의 최소 단위인 프로세스는 운영체제가 Code, Data, Stack, Heap 메모리 영역을 할당해준다. 스레드는 프로세스 내에서 Stack 메모리 영역을 제외한 다른 영역을 같은 프로세스 내에서 다른 스레드와 공유한다.

프로세스가 다른 프로세스와 정보를 공유하기 위해서는 번거로운 과정을 거쳐야 하지만 스레드는 프로세스 안에서 메모리를 공유하는 구조이기 때문에 다른 스레드와 정보 공유가 용이하다.

🎈스레드(Thread)

  • 다중 스레드

  • 스레드 생명주기 : 스레드는 탄생하고 소멸될 때까지 생명주기를 가진다.

🎁 멀티태스킹(Multi-Tasding)

멀티태스킹은 컴퓨터에서 각각의 일을 전담하는 해당 프로그램들(여러 개의 프로세스(process))이 동시에 실행된다. 멀티태스킹을 위해 운영체제가 취하는 방식이 멀티프로세스 시스템이다.

  • 스케줄링(Scheduling)

    멀티프로세스 시스템에서 각 프로세스는 동시에 실행된는것 처럼 보이지만, CPU가 하나이기 때문에 실행시간을 잘게 나누어 프로세스가 돌아가는데 각 프로세스들이 돌아가면서 CPU를 점유하는데 프로세스간 CPU점유작업을 말한다.

🎁 멀티스레딩(Multi-Threading)

멀티스레딩은 하나의 프로그램내에서 여러개의 일을 동시에 수행하는 것을 말한다. 하나의 프로그램이 동시에 여러 작업을 수행하는 것이 가능하고, 스레드간에 데이터의 공유가 가능하여 시스템을 효율적으로 사용할 수 있다. 또한, 인터넷 프로그램과 같이 여러 개의 태스크가 동시에 발생하는 작업을 처리하는데 유용하다.

🎈 메모리 영역

🎁 정적 세그먼트

🎨 Code 영역

메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부른다. 프로세스가 종료될때까지 계속 유지되는 영역이다.

🎨 Data 영역

메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다. 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등이 저장된다.

초기화된 데이터(Initialized Data)와 초기화되지 않은 데이터(Uninitialized Data) 세그먼트로 구분되는 이유는 메모리 공간을 효율적으로 사용하기 위함이다.

🎁 동적 세그먼트

🎨 Heap 영역

메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있고, 프로그래머가 동적으로 사용하는 영역이다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되며, 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.

java, c++과 같이 가비지 콜렉터(garbage collector)가 활동하는 경우에는 자동으로 반환되는 경우도 있다.

🎨 Stack 영역

메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다. 지역변수, 매개변수, 복귀 번지 등이 저장되어 있는 프로그램이 자동으로 사용하는 임시 메모리이다. 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.

다른 세그먼트들이 하위 영역으로부터 할당되지만 Stack 세그먼트는 상위 영역부터 할당된다.

0개의 댓글