雷雨交加的星期五
听说昨晚雨下的很大,雷打的很响,闪电很可怕,可是我不知道那个时候我去哪儿了,早上听说昨晚很多学校都淹掉了。我想这个世界还有多少事儿我不知道的,也许有时候我们稍微不留意就跟周围的世界脱节了,就好比今天课上老师讲他班上的一个女生的大学经历,我感觉这个人好厉害啊,跟她比起来我真的是很渺小。想想别说刻录系统盘了,就连装系统我都没有自己尝试过。看来学以致用这一点我真的差远了,有哪家公司会要一个只会考试的人呢?
再说说今天的学习的类容吧,程序的运行空间分为内核空间和用户空间,用户编程接口—API,Linux一点哲学,“一切皆为文件”;在Linux中对目录和设备的操作都等同于对文件的操作;Linux文件可分为:普通文件,目录文件,链接文件,设备文件;一个进程启劢时,都会打开三个文件:
标准输入:STDIN_FILENO0
标准输出:STDOUT_FILENO 1
标准出错处理:STDERR_FILENO 2系统调用-创建:intcreat(const char *filename, mode_tmode ) filename:创建的文件名(包含路径,缺省为当前路径)mode:创建模式。C库函数的文件操作是独立于具体的操作系统平台的,丌管是在DOS、Windows、Linux还是在VxWorks中都是这些函数,库函数-创建和打开。
除此之外,还学习了进程的一些知识,在复习计算机三级的时候也涉及到这些知识点的,现在才发现那个时候对这些知识了解到的只是些皮毛,只是一些概念跟本不知道进程到底是个什么?干什么的?今天具体了解到了其概念,其实它就是个资源,进程是一个具有一定独立功能的程序的一次运行活劢,同时也是资源分配的最小单元;其和程序的区别如下:程序是放到磁盘的可执行文件;进程是指程序执行的实例。
进程是动态的,程序使静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制
v进程是暂时的,程序使长久的:进程是一个状态变化的过程,程序可长久保存
v进程与程序组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)
v进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
进程有三种状态:
v执行状态:进程正在占用CPU
v就绪状态:进程已具备一切条件,正在等待分配CPU的处理时间片
v等待状态:进程不能使用CPU,若等待事件发生则可将其唤醒
Linux中的进程包含3个段,分别为“数据段”、“代码段”和“堆栈段”。
“数据段”存放的是全局变量、常数以及劢态数据分配的数据空间;
“代码段”存放的是程序代码的数据。
“堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。
v进程ID(PID):标识进程的唯一数字
v父进程的ID(PPID)
v启劢进程的用户ID(UID)
进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止。
v操作系统中将一次只允许一个进程访问的资源称为临界资源
调度的算法有:v先来先服务调度算法
v短进程优先调度算法
v高优先级优先调度算法
v时间片轮转法
死锁是:多个进程因竞争资源而形成一种僵局若无外力作用,这些进程都将永远不能再向前推进
获取ID的方法:#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void)
获取本进程ID。
pid_t getppid(void)
获取父进程ID
创建进程的方法:#include <unistd.h>
pid_t fork(void)
功能:创建子进程
fork的奇妙乊处在亍它被调用一次,却返回两次,它可能有三种不同的返回值.
Fok和vfok的区别:区别:
1. fork:子进程拷贝父进程的数据段
vfork:子进程与父进程共享数据段
2. fork:父、子进程的执行次序不确定
vfork:子进程先运行,父进程后运行.
总之,今天的收获大于昨天的,希望以后继续满载而归