实验二Linux进程调度及用户管理
- 格式:doc
- 大小:345.50 KB
- 文档页数:15
Linux2 调度进程在Fedora Core Linux系统中,允许多个进程并发执行。
但是,通常情况下,系统中的资源总是有限的,如果系统中并发执行的进程数量过多,就会造成系统的整体性能下降,尤其是当系统中存在黑客进程或者病毒进程时,甚至可能会造成系统瘫痪。
因而,有必要根据一定的策略对系统中的进程进行调度,例如,将可疑的进程终止,将不紧急的进程挂起或者降低其优先级等。
系统管理员或者普通用户都可以对进程进行调度,但是执行这种操作时要非常小心,因为有些进程是与系统运行相关联的,不能对它们有错误的调度。
可以使用如下所示的任一种方法进行进程调度:●在系统监视器的“进程”选项页中进行调度。
●在top命令的执行过程中使用交互命令进行调度。
●在命令行中直接执行各种调度进程的命令。
下面将介绍如何使用命令行命令调度进程。
1.更改进程的优先级在fedora系统中,各个进程都是具有特定的优先级的,系统在为某个进程分配CPU使用时间时是根据进程的优先级进行判定的。
有些进程比较重要,需要先执行,以提高整个程序的执行效率,而有些不太重要的进程,其优先级可以低一些。
通常情况下,大多数用户进程的优先级是相同的,但是可以使用Fedora提供的某些命令改变进程的优先级。
通过执行“ps -l”命令可以查看当前用户进程的优先级,如下所示。
PRI表示进程的优先级,它是由操作系统动态计算的,是实际的进程优先级;NI所表示的是请求进程执行优先级,它可由进程拥有者或者超级用户进行设置,NI会影响到实际的进程优先级。
下面介绍两个可以改变进程优先级的命令。
(1)nice命令格式:nice 【选项】命令功能:在启动进程时指定请求进程执行优先级。
该命令较常用的一个选项是“-n”,n值(即NI值)的范围是从-20到19。
-20代表最高的NI优先级,19代表最低的NI优先级。
如果没有该参数,将自动设置NI值为10。
默认情况下,只有超级用户才有权提高请求进程的优先级,而普通用户只能降低请求进程的优先级。
实验2 Linux 进程控制一. 实验目的1.学会查看和杀死进程。
2.加深对进程概念的理解,明确进程与程序的区别。
3.熟悉linux 下vi 的使用。
二. 实验指导1. 查看系统中的进程格式:ps [选项]例如:ps //显示当前用户在shell 下所运行的进程。
ps -u osmond //显示用户osmond 的进程。
ps -aux //显示系统中正在运行的所有进程的详细信息。
2. 杀死系统中的进程格式:kill [signal] PIDPID 是进程的识别号;signal 是向进程发出的进程信号。
3. vi 文本编辑工具进入Linux 的字符界面,输入vi file ,进入vi 编辑程序。
vi 提供了输入模式(insert mode )和命令模式(command mode )。
使用者进入vi 后,即处在命令模式下,此刻键入i 转换到输入模式。
在输入模式下,按ESC 可切换到命令模式。
命令模式下,常用的指令有::q! 离开vi ,并放弃刚在缓冲区内编辑的内容:wq 将缓冲区内的资料写入磁盘中,并离开vi:n 光标直接跳到第n:w 将当前编辑的内容存盘ESC 离开输入模式4. 有关进程控制系统调用三.实验内容1. 请在字符界面下完成下列作业控制操作:• 显示当前运行的进程• 运行cat 命令函数名调用格式 功能 fork() int fork()例:pid=fork(); 创建一个新进程,fork( )返回值意义如下: 0:在子进程中,pid 变量保存的fork( )返回值为0,表示当前进程是子进程。
>0:在父进程中,pid 变量保存的fork( )返回值为子进程的id 值(进程唯一标识符)。
-1:创建失败。
execl() int execl(新程序名,0) 重新加载进程,用新程序替换原进程。
如execl("bin/ls",0); 用bin/ls 替换原进程。
wait () int wait(int status) 例: wait(); 等待子进程运行结束。
操作系统实验报告进程调度操作系统实验报告:进程调度引言在计算机科学领域中,操作系统是一个重要的概念,它负责管理和协调计算机系统中的各种资源,包括处理器、内存、输入/输出设备等。
其中,进程调度是操作系统中一个非常重要的组成部分,它负责决定哪个进程在何时获得处理器的使用权,以及如何有效地利用处理器资源。
实验目的本次实验的目的是通过对进程调度算法的实验,深入理解不同的进程调度算法对系统性能的影响,并掌握进程调度算法的实现方法。
实验环境本次实验使用了一台配备了Linux操作系统的计算机作为实验平台。
在该计算机上,我们使用了C语言编写了一些简单的进程调度算法,并通过模拟不同的进程调度场景进行了实验。
实验内容1. 先来先服务调度算法(FCFS)先来先服务调度算法是一种简单的进程调度算法,它按照进程到达的顺序进行调度。
在本次实验中,我们编写了一个简单的FCFS调度算法,并通过模拟多个进程同时到达的情况,观察其对系统性能的影响。
2. 短作业优先调度算法(SJF)短作业优先调度算法是一种根据进程执行时间长度进行调度的算法。
在本次实验中,我们编写了一个简单的SJF调度算法,并通过模拟不同长度的进程,观察其对系统性能的影响。
3. 时间片轮转调度算法(RR)时间片轮转调度算法是一种按照时间片大小进行调度的算法。
在本次实验中,我们编写了一个简单的RR调度算法,并通过模拟不同时间片大小的情况,观察其对系统性能的影响。
实验结果通过实验,我们发现不同的进程调度算法对系统性能有着不同的影响。
在FCFS 算法下,长作业会导致短作业等待时间过长;在SJF算法下,长作业会导致短作业饥饿现象;而RR算法则能够较好地平衡不同进程的执行。
因此,在实际应用中,需要根据具体情况选择合适的进程调度算法。
结论本次实验通过对进程调度算法的实验,深入理解了不同的进程调度算法对系统性能的影响,并掌握了进程调度算法的实现方法。
同时,也加深了对操作系统的理解,为今后的学习和研究打下了良好的基础。
最新实验二-实验报告(进程管理)实验目的:1. 理解操作系统中进程的概念及其特性。
2. 掌握进程管理的基本原理和方法。
3. 学习进程创建、撤销、阻塞和唤醒等操作。
4. 熟悉进程间的同步与通信机制。
实验环境:- 操作系统:Linux/Unix- 编程语言:C/C++- 开发工具:GCC编译器,GDB调试器实验内容:1. 创建进程:编写程序,使用系统调用fork()创建子进程,并观察父进程与子进程的行为差异。
2. 进程撤销:实现一个程序,通过系统调用exit()或abort()撤销进程,并观察其对进程组和会话的影响。
3. 进程阻塞与唤醒:设计并实现一个父进程和多个子进程的程序,其中子进程执行阻塞操作(如sleep()),父进程负责唤醒这些子进程。
4. 进程同步:利用信号量或管程等同步机制,实现两个并发进程的同步操作。
5. 进程通信:通过管道(PIPE)、消息队列、共享内存等IPC机制,实现进程间的信息交换。
实验步骤:1. 设计并编写创建进程的程序代码。
2. 在Linux环境下使用GCC编译程序,并记录编译过程。
3. 运行程序,使用GDB等工具调试程序,并观察fork()的执行效果。
4. 实现进程撤销的程序,并记录exit()和abort()的不同行为。
5. 编写进程阻塞与唤醒的程序,并通过实验观察不同进程状态的变化。
6. 完成进程同步的代码实现,并测试死锁及其解决方法。
7. 编写并测试进程通信的程序,确保信息能够正确传递。
实验结果:- 展示创建进程前后的系统状态变化,包括进程表和内存分配情况。
- 记录进程撤销后,父进程收集子进程状态的输出。
- 展示进程阻塞与唤醒的输出结果,验证进程状态转换的正确性。
- 展示进程同步的实验结果,包括死锁的产生与解决。
- 展示进程通信的测试结果,验证信息传递的准确性。
实验分析:- 分析进程创建和撤销的系统资源变化。
- 讨论进程阻塞与唤醒机制的效率和应用场景。
- 探讨进程同步与通信的复杂性及其在多线程编程中的重要性。
实验2 进程控制一、实验目的加深对进程概念的理解,明确进程和程序和区别;进一步认识并发执行的实质;分析进程争用资源的现象。
二、实验内容1. 熟悉Linux进程控制常用命令。
2. 输入进程创建、控制的程序并调试程序。
三、实验预备知识1. 进程控制常用命令(1)ps 命令功能:查看目前的系统中有哪些进程,以及它们的执行情况。
常用命令格式及功能如下:ps 查看系统中属于自己的进程ps au 查看系统中所有用户的进程ps aux 查看系统中包含系统内部的及所有用户的进程主要输出列说明:USER:进程所有者的用户名PID:进程号TTY:进程从哪个终端启动TIME:此进程所消耗的CPU时间COMMAND:正在执行的命令或进程名称(2)top 命令功能:动态显示进程,实时监测进程状态。
与ps命令相似,只是top命令在执行后会以指定的时间间隔来刷新显示信息,以使top所显示的进程状态总是当前时刻的。
(3)kill 命令功能:结束或终止进程。
常用命令格式及功能如下:kill 5302 杀死PID为5302的进程kill -9 5302 强行杀死PID为5302的进程(4)echo $变量名功能:查看外壳变量的设定值。
例:echo $$ 显示当前进程PID2.常用系统调用函数常用系统调用函数、程序的说明、参数及定义如下:(1)fork()函数功能:创建一个新进程函数格式:int fork()其中返回int取值意义如下:小于0:创建失败0: 创建成功,在子进程中返回0值大于0: 创建成功,在父进程中返回子进程id值-1:创建失败(2)wait()函数功能:父进程等待子进程终止,以便对子进程进行善后处理。
函数格式:int wait(int *statloc)参数定义:statloc 指出子进程终止状态码的位置。
若不关心子进程的终止状态,可传递一个空指针。
返回值:正常返回时,为终止子进程的PID;错误返回时为-1;其他为0。
实验2 进程调度算法2.1 实验目的进程管理是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。
在进程管理中,进程调度是核心,因为在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态,当就绪进程个数大于处理器数目时,就必须依照某种策略决定哪些进程优先占用处理器。
本实验模拟在单处理器情况下的进程调度,目的是加深对进程调度工作的理解,掌握不同调度算法的优缺点。
下面回顾一下进程管理的相关内容。
2.1.1 进程控制块为了管理和控制进程,系统在创建每一个进程时,都为其开辟一个专用的存储区,用以随时记录它在系统中的动态特性。
而当一个进程被撤消时,系统就收回分配给它的存储区。
通常,把这一存储区称为该进程的“进程控制块”(Process Control Block)。
由于PCB是随着进程的创建而建立,随着进程的撤消而取消的,因此系统是通过PCB 来“感知”一个个进程的,PCB是进程存在的唯一标志。
随操作系统的不同,PCB的格式、大小以及内容也不尽相同。
一般地,在PCB中大致应包括如下4方面的信息。
·标识信息:进程名等。
·说明信息:进程状态、程序存放位置、数据存放位置等。
·现场信息:通用寄存器内容、控制寄存器内容、断点地址等。
·管理信息:进程优先数、队列指针等。
2.1.2 进程控制块队列在多道程序设计环境里,同时会创建多个进程。
当计算机系统只有一个CPU时,每次只能让一个进程运行,其他的进程或处于就绪状态,或处于阻塞状态。
为了对这些进程进行管理,操作系统要做三件事。
(1)把处于相同状态的进程的PCB,通过各自的队列指针链接在一起,形成一个个队列。
通常有运行队列、就绪队列、阻塞队列。
(2)为每一个队列设立一个队列头指针,它总是指向排在队列之首的进程的PCB。
(3)排在队尾的进程的PCB,它的“队列指针”项内容应该为“NULL”,或一个特殊的符号,以表示这是该队的队尾PCB。
Linux终端中的系统进程调度和管理命令Linux操作系统作为一种开源的操作系统,具有高度的可定制性和灵活性。
在Linux终端中,系统进程调度和管理是非常重要的一部分。
本文将探讨Linux终端中常用的系统进程调度和管理命令。
一、进程调度命令1. ps命令ps命令用于查看当前系统的进程状态。
在终端中输入"ps"命令,即可列出当前运行的所有进程,并且提供各种详细信息,如进程ID (PID)、状态、CPU使用率等。
示例:```$ psPID TTY TIME CMD1 ? 00:00:01 init2 ? 00:00:00 kthreadd3 ? 00:00:00 migration/04 ? 00:00:00 ksoftirqd/0...```2. top命令top命令是一个实时的进程查看工具,用于查看当前系统的进程状态和系统资源的使用情况。
在终端中输入"top"命令,即可实时地显示进程列表和各个进程的资源占用情况。
示例:```$ toptop - 20:30:50 up 1 day, 1:35, 3 users, load average: 0.02, 0.02, 0.00 Tasks: 256 total, 1 running, 255 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 4044080 total, 834456 free, 2679908 used, 532716 buff/cacheKiB Swap: 4194300 total, 0 free, 4194300 used. 1185820 avail Mem...```3. nice命令nice命令用于设置进程的优先级。
第1篇一、实验目的通过本次实验,加深对操作系统进程调度原理的理解,掌握先来先服务(FCFS)、时间片轮转(RR)和动态优先级(DP)三种常见调度算法的实现,并能够分析这些算法的优缺点,提高程序设计能力。
二、实验环境- 编程语言:C语言- 操作系统:Linux- 编译器:GCC三、实验内容本实验主要实现以下内容:1. 定义进程控制块(PCB)结构体,包含进程名、到达时间、服务时间、优先级、状态等信息。
2. 实现三种调度算法:FCFS、RR和DP。
3. 创建一个进程队列,用于存储所有进程。
4. 实现调度函数,根据所选算法选择下一个执行的进程。
5. 模拟进程执行过程,打印进程执行状态和就绪队列。
四、实验步骤1. 定义PCB结构体:```ctypedef struct PCB {char processName[10];int arrivalTime;int serviceTime;int priority;int usedTime;int state; // 0: 等待,1: 运行,2: 完成} PCB;```2. 创建进程队列:```cPCB processes[MAX_PROCESSES]; // 假设最多有MAX_PROCESSES个进程int processCount = 0; // 实际进程数量```3. 实现三种调度算法:(1)FCFS调度算法:```cvoid fcfsScheduling() {int i, j;for (i = 0; i < processCount; i++) {processes[i].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[i].processName); processes[i].usedTime++;if (processes[i].usedTime == processes[i].serviceTime) { processes[i].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[i].processName); }for (j = i + 1; j < processCount; j++) {processes[j].arrivalTime--;}}}```(2)RR调度算法:```cvoid rrScheduling() {int i, j, quantum = 1; // 时间片for (i = 0; i < processCount; i++) {processes[i].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[i].processName); processes[i].usedTime++;processes[i].serviceTime--;if (processes[i].serviceTime <= 0) {processes[i].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[i].processName); } else {processes[i].arrivalTime++;}for (j = i + 1; j < processCount; j++) {processes[j].arrivalTime--;}}}```(3)DP调度算法:```cvoid dpScheduling() {int i, j, minPriority = MAX_PRIORITY;int minIndex = -1;for (i = 0; i < processCount; i++) {if (processes[i].arrivalTime <= 0 && processes[i].priority < minPriority) {minPriority = processes[i].priority;minIndex = i;}}if (minIndex != -1) {processes[minIndex].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[minIndex].processName);processes[minIndex].usedTime++;processes[minIndex].priority--;processes[minIndex].serviceTime--;if (processes[minIndex].serviceTime <= 0) {processes[minIndex].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[minIndex].processName); }}}```4. 模拟进程执行过程:```cvoid simulateProcess() {printf("请选择调度算法(1:FCFS,2:RR,3:DP):");int choice;scanf("%d", &choice);switch (choice) {case 1:fcfsScheduling();break;case 2:rrScheduling();break;case 3:dpScheduling();break;default:printf("无效的调度算法选择。
1.查看并创建用户的计划任务列表crontab文件;
1)查看crontab命令的帮助信息;
在终端下键入info crontab, 进入crontab帮助手册:
2)查看用户的计划任务列表;
查看特定用户的计划任务列表:
在终端下键入crontab -l -u duke 列出duke用户的所有定时任务,如下:
终端提示no crontab for duke,说明用户duke目前没有计划任务。
查看当前用户的计划任务列表:
在终端下键入crontab -l 列出当前用户的所有定时任务,如下:
终端提示no crontab for duke,说明用户duke目前没有计划任务。
2.通过crontab文件对调度进程的计划任务进行编排操作。
1)建立crontab文件;
在终端下键入crontab -e ,提示当前无crontab文件,选择编辑器并新建如下:进入VI编辑器,编辑当前crontab文件,可以看到提供了一些注解作说明。
在crontab中输入0 3 * * 1 ls /etc 并保存,实现在每周一早上三点执行ls /etc 命令。
再次查看crontab文件,可以看到已经保存。
2)使用crontab命令安装crontab文件,安排计划任务;
对于位于/home下的crontab文件,使用crontab <filename>载入crontab计划任务中,如图:
3)查看计划任务表,确认计划任务是否已被安排;
键入crontab -l,查看计划任务安排情况,如图:
4)删除计划任务列表。
在终端下键入crontab -r ,删除当前用户的crontab文件,如下:。
实验二1 实验名称:Linux进程调度及用户管理2 实验目标2.1 掌握手工启动前后台作业的方法。
2.2 掌握进程与作业管理的相关Shell命令。
2.3 掌握at调度和cron调度的设置方法。
2.4了解系统性能监视的基本方法。
2.5 掌握用户管理基本方法和命令。
2.6 具有批量新建用户能力。
2.7掌握非实时的通信方式。
3 实验环境和准备3.1Windows XP下基于“VMware Workstation”虚拟机环境的Red Hat Enterprise Linux Server 5系统。
3.2将主机改为具有个人学号后3位特征的名称。
4 实验要求、步骤及结果4.1复习vi的基本操作;实现用户间非实时通信;进行作业和进程的基本管理。
【操作要求1】root用户在个人用户主目录下,利用vi新建student.txt文件;存盘退出。
容参见下表左列。
student.txt文件容password.txt文件容S01:x:800:800::/home/S01:/bin/bashS02:x:801:800::/home/S02:/bin/bashS03:x:802:800::/home/S03:/bin/bashS04:x:803:800::/home/S04:/bin/bashS05:x:804:800::/home/S05:/bin/bashS06:x:805:800::/home/S06:/bin/bashS07:x:806:800::/home/S07:/bin/bashS08:x:807:800::/home/S08:/bin/bashS09:x:808:800::/home/S09:/bin/bashS10:x:809:800::/home/S10:/bin/bashS11:x:810:800::/home/S11:/bin/bashS01:12345678S02:12345678S03:12345678S04:12345678S05:12345678【操作步骤1-新建】【操作步骤2-存盘】【操作要求2】利用vi新建password.txt文件;容参见上表右列。
【操作步骤】【操作要求3】将vi password.txt作业挂起;显示当前所有进程的详细信息。
【操作步骤1-挂起】【操作步骤2-显示】【操作要求4】将挂起的vi作业切换到前台;继续向password.txt文件输入以下容,输入完成后存盘退出。
password.txt文件的后段容:S06:12345678S07:12345678S08:12345678S09:12345678S10:12345678S11:12345678【操作步骤1-作业切换】【操作步骤2-vi操作】【操作要求5】返回虚拟终端1(root用户);将helen用户的进程优先数改为-3。
【操作步骤】【操作要求6】返回虚拟终端2(helen用户);后台再次启动ftp进程;显示进程的详细信息。
【操作步骤1-启动进程】【操作步骤2-显示进程】4.2基本用户管理和组群管理【操作要求1】创建student用户;启动虚拟终端3,用student用户登录;修改自己的登录口令。
【操作步骤-创建】【操作步骤-修改口令】【操作要求2】将普通用户student切换为超级用户并使用相应环境,比较超级用户和普通用户工作环境。
【操作步骤】【工作环境比较】工作环境普通用户student 超级用户root命令提示行用户主目录【操作要求3】新建名为“class15”的组群,GID=800。
【操作步骤及结果】注:可直接跳到4.3批量新建多个用户【操作要求4】利用vi命令,修改/etc/hosts文件的最后一列的容与现主机名相同。
学习并利用“mail”命令向student用户发送一封,容为“Please hand in the experimental report.”,主题“Urge the experimental report.”,并抄送给helen用户。
【操作步骤1-vi】【操作步骤2-学习】【操作步骤3-发】【操作要求5】启动虚拟终端2;helen用户登录,接收、阅读,并回复“I know”;后台启动ftp进程;显示进程的优先级。
【操作步骤1-收并回复】【操作步骤2-启动进程】【操作步骤3-显示优先级】【操作要求6】删除student用户同时删除其个人用户主目录。
【操作步骤-删除用户】4.3批量新建多个用户【操作要求1】为某学习小组的10位同学批量创建用户账号。
用户账号为“S”+ 2位顺序号,即S01~S11,初始口令均为“12345678”,且均隶属于GID为800的组群、假设UID从800开始顺序编号。
注:用户信息保存在student.txt文件中,口令保存在password.txt中。
(参见本文件4.1)【截取/etc/group相关容】【操作步骤1】【截取/etc/passwd相关容】提示:cat命令,截取UID>=500容【截取/etc/shadow相关容】【操作步骤2】【截取/etc/passwd相关容】【截取/etc/shadow相关容】【操作步骤3】【截取/etc/passwd相关容】【截取/etc/shadow相关容】【操作步骤4】【截取/etc/passwd相关容】【截取/etc/shadow相关容】【抄写student.txt文件第一行和最后一行容】St001:x:800:800::/home/st001:/bin/bash……St010:x:800:800::/home/st010:/bin/bash【抄写password.txt文件第一行和最后一行容】St001:12345678……St010:12345678【操作要求2】启动虚拟终端3,S10登陆。
【截取登陆界面】4.4 at进程调度【操作要求1】设置一个10分钟后执行的at调度。
要求:统计系统中登录用户数,并将结果保存到who.txt 文件中;向所有登录用户发送“The Computer Will Shutdown in 5 Minutes!”的消息;并在5分钟后重新启动系统。
【操作步骤-设置at调度】【操作步骤-at命令】【操作要求2】显示进程详细状态;显示等待中的at调度。
【操作步骤1-显示进程】【操作步骤2-显示at调度】【操作要求3】删除等待中的at调度。
【操作步骤】4.5 cron进程调度【操作要求1】查看系统时间。
设置crontab调度,(时间节点依照上课时间而变,主要还是要看到执行结果)①每天晚上8:50查看系统中进程的状态;②每周一~五的9:00统计登入用户数并保存在who.txt文件中。
③每月13,18,20日16:55向各位登录用户发送“Pleas submit financial statement.”信息。
【操作步骤1-查看系统时间】【操作步骤2-设置cron调度】【操作要求2】显示crontab调度的容。
【操作步骤及结果】【操作要求3】查看crontab调度的执行结果。
【操作步骤及结果截图①】【操作步骤及结果截图②】【操作步骤及结果截图③】5 评价5.1实验评价实验涉及到了上课的所有容,设计十分全面和周到。
不仅让我们回忆了自己学习过的知识,巩固了相关知识,同时又有关于进程的阅读要求,扩展了视野。
5.2自我评价整个实验重点在于了解Linux操作系统的桌面环境和掌握基本shell命令的使用。
知识点在课堂上上机操作的时候老师教过,但还有一部分的题需要我们自己学习老师发的辅导资料完成实验,这其中就考验了我们的自觉性。
我们遇到不懂的问题可以问同学或者上网查但绝对不可以直接不动脑子的放弃或抄。
比如:最后一个题目中编辑用户信息文件和用户口令文件的格式不太懂,我经过网上搜查资料,彻底搞懂之后完成题目。
6 思考题6.1简述线程与进程的主要区别。
线程是指进程的一个执行单元,也是进程的可调度实体。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。
多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。
线程的运行中需要使用计算机的存资源和CPU。
6.2 Linux操作系统可以描述进程的哪几种状态。
运行状态(正在使用CPU)、就绪状态(等待分配CPU)、堵塞状态(等待输入/输出等)6.3简述从“程序”到“作业”再到“进程”的动态演变过程。
“程序”正准备进入到存,被称之为“作业”。
然而当这个作业进入到存后,称之为“进程”。
程序被加载到存,首地址送入程序计数器。
作业从外存的后备队列进入存的就绪队列等待运行,依照某种算法将外存上处于后备队列中的若干个作业调入存,PCB记录进程当前时刻的状态及与其它进程、资源的关系,系统中所有PCB构成控制并发程序执行,维护系统环境的依据。