[초보자용] 프로세스[Linux]

개시하다


나는 과정학에 관한 것을 기록할 것이다.
당신의 수정과 추기를 기다립니다.

프로그램


프로세스는 프로그램이 실행 중인 상태를 표시합니다.프로그램이 실행 중인 실행 상태를 나타내는 모든 정보를 포함하는 것을 과정이라고 한다.
예를 들어 터미널에서 다음 명령을 실행했다면
  ls コマンド入力 → [Enter] → lsコマンド実行
이상은'ls를 생성하는 과정'을 나타낸다.
여러분이 평소에 단말기에서 사용하는 지령을 입력하는 것은 물론이고 조개껍질로서의 bash 등도 과정으로 작동하고 있습니다.
왠지 흐름의 인상을 잡았나요?
다만, 설명 절차를 더 씹으면 다음 표현으로 바꿀 수 있다.
CPU는 프로그램에 기재된 순서와 명령문에 따라 어떤 메모리의 데이터를 연산하는 상태입니다.
실행 중인 프로그램이 사용하는 데이터는 모두 메모리에 기록한 후에 사용합니다.연산 결과에 따른 값, 명령줄에 입력된 값, 통신에서 수신된 데이터 등.이 데이터는 메모리에 넣고 사용하기 때문에 CPU는 프로그램 실행 과정에서 메모리만 보면 된다.
프로세스가 실행 중일 때, 위에서 말한 각종 값에 복잡한 변화가 생겼는데, 그것들은 모든 과정에서 고유한 것이다.모든 과정이 가지고 있는 각종 특정 값을 상하문이라고 부른다.Linux 커널의 모든 프로세스에 대해taskstract 구조체와 같은 데이터 구조를 준비하여 가지고 있는 상하문 정보를 모두task 처리stract 구조체로 관리하다.Linux 커널 작업 시 task-stract 구조체를 조작하다.

task_struct 구조


task_struct 구조는 처리 데이터의 종류에 따라 내부 부분은 두 부분이다.

텍스트 세그먼트


프로그램의 명령열 (실행된 프로그램 자체)

데이터 세그먼트


스택 포인터(스택 영역의 어디에서 보이는지), 프로그램 카운터(실행 프로그램의 어디) 등 처리 관리용 데이터 영역의 정보, 실제 사용되는 변수의 값 등을 저장했다.

생성 프로세스


Linux에서는 하위 프로세스가 상위 프로세스에서 복사(fork) 후에 생성됩니다.어쨌든 자신의 복사본을 아이로 생성한다.
하위 프로세스가 생성되면 하위 프로세스에 메모리 영역을 지정합니다.부모 프로세스의 데이터 세션을 지정한 메모리에 복사해서 프로세스로 시작합니다.실행할 프로그램 자체가 부모 프로세스와 공유되고 실제 사용하는 변수 값 등은 하위 프로세스에 접근할 것입니다.

과정 중의 친자 관계의 예를 들면 ls 명령이 bash에서 실행될 때 부모 프로세스의 bash로 하위 프로세스로 ls를 생성합니다.
부모 프로세스를 간단하게 복제했을 뿐입니다. 완전히 같은 조작 과정은 새로운 것만 생성합니다. 따라서 하위 프로세스로 bash 복제를 생성한 후 그 하위 프로세스의taskstruct 구조체의 데이터를 고쳐서 ls로 작동할 수 있습니다.

인용하다


[Linux의'과정'은 무엇입니까? -'응용능력'을 높이기 위한 Linux 재입문(13)]
http://www.atmarkit.co.jp/ait/articles/1706/23/news010.html
[인기 엔지니어 시리즈~메모리, 프로세스, 스레드 편~각종 블로그가 되었습니다]
http://moro-archive.hatenablog.com/entry/2014/09/11/013520#4

좋은 웹페이지 즐겨찾기