1. Trang chủ
  2. » Công Nghệ Thông Tin

chap01 c linux p2 vanlangembeddedsystems

24 108 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 334,34 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cơ bản về tiến trình - Processtác với process ‰ Foreground process ‰ Background process hành còn gọi là các kernel_thread, daemon... Cơ bản về tiến trình - Process„ Background process vẫ

Trang 1

LẬP TRÌNH

GV: Nguyễn Ngọc Tú Email: Tu.NN79@gmail.com

Chương 01:Lập trình C/C++ trên Linux

(P2: Tiến trình)

Trang 3

Cơ bản về tiến trình - Process

tác với process

‰ Foreground process

‰ Background process

hành còn gọi là các kernel_thread, daemon

Trang 4

Cơ bản về tiến trình - Process

[root@penguinvm log]# sleep 10h &

[1] 6718

[root@penguinvm log]# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 6718 6692 0 14:49 ttyp0 00:00:00 sleep 10h

& Æ “background”

Job Number Process ID (ID) Parent Process ID

Trang 5

Cơ bản về tiến trình - Process

„ Background process vẫn xuất kết quả ra

standard output là màn hình trong lúc thực thi

mất dữ liệu xuất

„ Người dùng không thể tương tác với chương

trình qua standard input là bàn phím với

background proces

Trang 6

Cơ bản về tiến trình - Process

Trang 7

Cơ bản về tiến trình - Process

„ Process identifier (PID): duy nhất, tăng dần từ 0

„ Một số PID đặc biệt:

‰ 1: init

‰ …

Trang 8

Bộ nhớ của Tiến trình

„ Text : chứa chương trình–code thực thi-chứa các các instruction dành cho CPU thực hiện- read only.

„ Data : vùng dữ liệu-chứa các biến được khai báo tĩnh hoặc động-xin cấp phát trong lúc

thực thi.

„ Stack : chứa trạng thái và các thông tin liên quan đến việc gọi hàm.

Trang 9

„ etext : địa chỉ sau vùng text

„ edata : địa chỉ kết thúc vùng initialized data

„ end : Địa chỉ bắt đầu vùng heap

Trang 12

Tạo tiến trình

„ Nhân bản Process hiện hành

Parent

Child

fork()

Trang 13

Chu kỳ sống của Process

Trang 14

Tạo process

„ Dùng hàm:

‰ pid_t fork(void);

„ Nếu thành công:

„ Nếu thất bại, trả về -1 và lý do kèm theo:

‰ ENOMEM: không đủ bộ nhớ

: số process vượt quá giới hạn cho phép

Trang 16

Mô hình

Process Text Data

Text Data

Process CHA

Process CON

fork()

Trang 17

printf("Childprocess output: PID = %d\n",getpid());

printf("Myparent PID is %d\n", getppid());

Trang 18

Kết thúc tiến trình

„ Dùng system call

‰ exit()

„ Orphaned process

„ Zombied process

process cha biết

Trang 19

Kết thúc tiến trình

„ waitpid()

‰ #include <sys/types.h>

‰ #include <sys/wait.h>

„ pid_t waitpid(pid_t pid, int *stat_loc, int options);

‰ Trả về PID của process con kết thúc,

‰ -1 nếu thất bại

„ Đối số pid:

‰ < -1: Đợi các tiến trình con có “group ID” bằng với PID của nó

‰ = -1: Đợi bất kỳ các process con nào

‰ = 0: Đợi bất kỳ các process con nào có process group ID bằng

Trang 21

#include <stdio.h>

#include <unistd.h>

#define PROCESSES 3

int main( int argc, char *argv[ ]) {

int count, retval, child_no;

retval= 1;

for( count = 0; count < PROCESSES; count++ ) {

if( retval != 0 ) retval= fork();

Trang 22

Bài Tập !

Trang 23

Q/A

Ngày đăng: 19/06/2018, 14:29

TỪ KHÓA LIÊN QUAN