操作系统复习(进程的一些基本概念)

    技术2022-07-10  129

    操作系统复习

    进程的一些基本概念进程定义进程至少运行一个可执行程序,含有代码和初始数据进程包括一个独立的进程用户空间进程包括系统资源进程包括一个执行栈区 进程控制块总结

    进程的一些基本概念

    随着操作系统发展到分时系统,为了开发同一道作业中不同作业步之间的并发,引入了进程机制。在现在的操作系统中,程序以进程的方式使用系统资源,进程的出现实现了操作系统的并发性。

    进程定义

    进程可以理解为程序对数据或请求的处理过程。进程有以下特点:

    进程至少运行一个可执行程序,含有代码和初始数据。进程包括一个独立的进程用户空间。进程包括系统资源。进程包括一个执行栈区。

    进程至少运行一个可执行程序,含有代码和初始数据

    以 Linux 0.11 为例,Linux 0.11中的可执行文件格式为a.out,包括: (1) 执行头部分。这其中包含一些参数,内核使用这些参数把执行文件加载到内存中并执行。

    struct exec { unsigned long a_magic; /* 目标文件魔数*/ unsigned a_text; /* 代码长度,字节数 */ unsigned a_data; /* 数据长度,字节数 */ unsigned a_bss; /* 文件中的未初始化数据区长度,字节数 */ unsigned a_syms; /* 文件中的符号表长度,字节数 */ unsigned a_entry; /* 执行开始地址 */ unsigned a_trsize; /* 代码重定位信息长度,字节数 */ unsigned a_drsize; /* 数据重定位信息长度,字节数 */ };

    (2) 代码段部分。含有程序执行时被加载到内存中的指令代码的相关数据。 (3) 数据段部分。这部分含有已经初始化过的数据,总是被加载到可读写的内存中。 (4) 数据重定向部分。 (5) 代码重定向部分。 (6) 符号表部分。 (7) 字符串表部分。

    进程包括一个独立的进程用户空间

    每个进程都有其独立的地址空间,其中存放着程序与数据,当不同的进程执行同一个程序时,由于不同进程的地址空间是相互独立的,所以它们处理的数据是不同的。

    进程包括系统资源

    程序运行有时会需要一些必须的系统资源,例如I/O设备,文件等等。

    进程包括一个执行栈区

    操作系统必须为进程分配一个栈区,用来保存过程调用时的现场或在栈中分配的局部变量。

    以上讨论进程时,涉及到了程序、数据、用户栈,为此引入进程映像的概念,进程映像为程序、数据、用户栈的集合。

    进程控制块

    进程控制块(PCB),包括进程标识信息,处理机状态信息,进程控制信息。

    Linux 0.11的PCB结构如下:

    struct task_struct { /* these are hardcoded - don't touch */ long state; /* -1 unrunnable, 0 runnable, >0 stopped ,进程的状态*/ long counter; long priority; long signal; struct sigaction sigaction[32]; long blocked; /* bitmap of masked signals */ /* various fields */ int exit_code; unsigned long start_code,end_code,end_data,brk,start_stack; long pid,father,pgrp,session,leader; unsigned short uid,euid,suid; unsigned short gid,egid,sgid; long alarm; long utime,stime,cutime,cstime,start_time; unsigned short used_math; /* file system info */ int tty; /* -1 if no tty, so it must be signed */ unsigned short umask; struct m_inode * pwd; struct m_inode * root; struct m_inode * executable; unsigned long close_on_exec; struct file * filp[NR_OPEN]; /* 局部描述符表,进程的地址空间 */ struct desc_struct ldt[3]; /* tss for this task ,即任务状态段*/ struct tss_struct tss; };

    总结

    进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源。一个进程实体由进程控制块、程序段、相关数据段组成。

    Processed: 0.010, SQL: 9