【OS】课设记录总结+进程整理
进程
1.定义:程序是一个指令序列;
PCB:进程控制块,用来描述进程的各种信息,进程代码的存放位置;
PCB,程序段,数据段构成进程的实体(进程映像)
程序段、数据段、PCB三部分组成了进程实体(进程映像)。
一般情况下,我们把进程实体就简称为进程例如,所谓创建进程,实质上是创建进程实体中的PcB;而撤销进程,实质上是撤销进程实体中的PCB
注意:PCB是进程存在的唯一标志
从不同的角度,进程可以有不同的定义,比较传统典型的定义有:
- 进程是程序的‘一次’执行过程
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
引入进程实体的概念之后,进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
注意:严格来说,进程和进程实体是不一样的,实体是静态的,进程则是动态的,
PCB:操作系统通过PCB来管理进程,因此PcB中应该包含操作系统对其进行管理所需的各种信息。
程序段:程序代码存放位置;
数据段:程序运行时使用,产生的运算数据。如全局变量,局部变量,宏定义的常量,就是存放在数据段;
介绍PCB:
进程描述信息
- 进程标识符PID
- 用户标识符UID
进程控制和管理信息
- 进程当前状态
- 进程优先级
资源分配清单
- 程序段指针
- 数据段指针
- 键盘
- 鼠标
各种寄存器值:当进程切换是需要把进程当前运行情况记录下来保存在PCB中,程序计数器的值表示当前程序执行到哪一句;
2.进程的组织:在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式把这些PCB组织起来。
注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题
进程的组织方式:
1.链接方式:
按照进程状态将PCB分为多个队列
操作系统持有指向各个队列的指针
2.索引方式:
- 根据进程状态的不同,建立几张索引表
- 操作系统持有指向各个索引表的指针
!![](https://img-blog.csdnimg.cn/2021031909175560.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pjdzEyMzQ1MTU=,size_16,color_FFFFFF,t_70)![](https://img-blog.csdnimg.cn/20210319091811117.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pjdzEyMzQ1MTU=,size_16,color_FFFFFF,t_70)
进程的特征:
- 动态性:进程是程序的一次执行过程,动态产生,变化和消亡;是进程最基本的特征
- 并发性:内存中有多个进程实体,各个进程可以并发执行;
- 独立性:进程是能够独立运行的,独立获得字样,独立接受调度的基本单位(进程)
- 异步性:各进程按各自独立的,不可预知的速度向前推进,操作系统要提供进程同步机制来解决异步问题
- 结构性:每个进程都会分配一个PCB。结构上是由PCB,数据块,程序块组成;
课程设计–Linux二级目录设计
- 使用C语言在linux系统下实验;
- 使用C++在window下模拟系统实验;
C知识点:
C语言学习网站:
-
fprintf() 和 printf() 之间的区别
fprintf是将字符输出到流(文件)的,printf是输出到标准输出设备(stdout)的,一般就是我们的屏幕。
如果使用fprintf(stdout, “”) ;相当于指定输出到设备也就与printf() 相同了; -
求长度
**strlen(str) //C len(str) #python length(str) %matlab**
-
输入函数
scanf("%d",len); //C input(len); #python cin<<len; //C++
linux 底层C函数
IO函数
-
open()
头文件 #include <sys/types,h> #include<sys/stat.h> #include<fcntl.h>
函数定义: int open(const charpathname, int flags)
int open(const charpathname, int flags, mode_t mode); 参数flags 所能使用的参数旗标:
返回值:只要有一个权限被禁止返回-1,否则返回 0 -
dup() 复制文件描述符
头文件 include <unistd.h>
函数定义:int dup(int oldfd ) dup()用来复制参数oldfd 所指的文件描述符,并返回,共享所有锁定,读写位置和各项权限和旗帜,
-
close()
头文件 #include <unistd.h>
函数定义:int close(int fd) 参数fd为先前创建文件时候的文件描述符;
返回值:顺利关闭 return 0; 发生错误返回-1; -
read()
-
write()
-
lseed() 操作文件指针
shmat(shmid, 0, 0);
shmget(shmid, 0, 0);
signal(SIGUSR2, dealExit);
lockf(1,1,0)
getpid()
gets()
strstr()
C++知识点
- VS 编译安全问题,解决strcpy等不安全
解决方法:
(打开)
项目->属性->C/C+±>预处理器->预处理器定义
(添加)
_CRT_SECURE_NO_DEPRECATE
_CRT_NONSTDC_NO_DEPRECATE
本文来自博客园,作者:jucw,转载请注明原文链接:https://www.cnblogs.com/Jucw/p/16216581.html