fprintf函数定义格式:
int fprintf(FILE * stream,const char * format);
fprintf函数根据format字符串来转换并格式化输出数据到stream指定的文件中,成功则返回实际输出的字符,失败则返回-1;
fscanf函数定义格式:
Int fscanf (FILE * stream,const char * format);
fscanf从参数steam的文件流中读取字符串,再根据format字符串来转换并格式化数据,成功则返回参数值,失败则返回-1;
进程控制编程:
进程是一个具有一定独立功能的一次性活动,同时也是资源分配的最小单元;
分配内存:针对进程分配,3G,给内核分配1G空间;
进城与程序的区别:
进程是动态的,程序是静态的;
进程是暂时的,程序是永久的;
进程的组成包括程序,数据和进程控制块;
通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
父进程与子进程:
每个进程都是由父进程创建,而子进程又可以创建子进程得子进程;
进程可以被撤销;
进程分为三个状态:执行状态,就绪状态,等待状态。进程创建完便处于就绪状态,操作系统进行调度,进程切换到执行状态,执行完毕,进程因等待某个资源而睡眠,从而处于等待状态,并释放CPU资源。当进程因等待资源分配而唤醒,进程便再次处于就绪状态。
时间片切换:通过内部时钟的中断溢出实现,计数次数满,发生中断,从而发生任务调动,把就绪状态的进程切换到执行状态。CPU很多时间都处于等待状态。
Linux进程:
Linux是一个多进程系统,它的每个进程之间具有并行性,互不干扰;每个进程之间通过内核进行通信。
Linux的进程的三个段:数据段,代码段,堆栈段。
linux下地址进程空间:
临界资源:操作系统中将一次只允许一个进城访问的资源称为临界资源;
进程同步:一组并发进程按一定的顺序执行的过程称为进程间的同步,具有同步关系的一组进程称为合作进程;合作进程间互相发送的信号称为消息或事件。
进程调度:按一定算法,从一组待运行进程中选出来一个占有cpu运行,调度方式有抢占式和非抢占式;
抢占式调度:实时性,一个进程创建出一个新进程,则优先级别更高的进程先运行,而优先级别低的进程马上被切断,直到优先级别最高的进程结束。
调度算法:有先来先调度算法,短进程优先算法,高优先级优先调度算法,时间片轮转法;
死锁:多个进程因竞争资源而形成的一种僵局,若无外力作用,这些进程将永远不能向前推进;
获取ID:pid_t getpid(void); 获取本进程ID;
pid_t getppid(void); 获取父进程ID;
创建子进程:pid_t folk(void); 被调用一次,返回两次。vfork保证子进程优先运行,共享内存。
exec函数族:用被执行的程序替换调用他的程序。exec启动一个新程序,替换原有进程,因此进程的PID不会改变。