进程
进程是指存放运行一个程序所需要所有信息的容器,与每个进程相关的是地址空间,该地址空间是连续有限的,存放有可执行程序,程序计数器、堆栈等,进程可以在这里进行读写。在许多操作系统中,与进程相关的所有信息,除了进程自己的地址空间以外,均存放在操作系统的进程表中,该表为数组结构,当前存放的每个进程都要占用其中一项,该表项记录了了进程状态,包括程序计数器、堆栈指针、内存分配状况、所打开文件的状态、账号和调度信息以及其他在进程由运行态转换为就绪态或阻塞态时必须保存的信息,通过进程表中的信息,可以保证该进程随后能再次启动,这里解释一下,在cpu中,一次只能运行一个进程,我们平常使用电脑时,会启动很多进程,我们可以边打游戏边听歌,宏观上似乎cpu一次可以运行多个进程,其实不是,一个单核cpu一次只能运行一个进程,只是进程间的切换速度非常快,快到我们无法感受到,切换进程意味着我们要保存进程的运行状态以便以后可以从中断点再次执行,进程表的功能就是起到记录进程状态的作用。
因此,一个进程包括进程的地址空间以及对应的进程表项。
进程树
若一个进程能够创建一个或是多个进程,而这写进程又可以创建进程,则形成进程树,如下图:
要注意,进程只有一个是父进程,其余全为子进程,系统管理器授予每个进程一个UID(User IDentification,即表明该进程是由哪个用户创建的),子进程与父进程拥有一样的UID。
地址空间
地址空间即进程工作的场所,这里有个安全的概念,操作系统允许在内存中同时运行多道程序,当一个进程被挂起时,其占用的内存并不会被释放,如何防止其他进程(例如一些恶意进程)修改该挂起进程地址空间的内容呢?这就需要某种保护机制,这种机制是由硬件提供的,关于这个硬件,我查阅到以下资料:
在cpu中存在基址寄存器和界限寄存器,这两个寄存器记录的东西限制了进程所能访问的内存地址,当操作系统切换进程时将地址空间写入这两个寄存器,这两个寄存器只有CPU处于内核态时才能够被修改。
文件
我们对于文件非常的熟悉,文件存放在目录中,目录中又可以包含目录,这样就产生了层次结构——文件系统,文件系统中的每一个文件都可以通过绝对路径或相对路径来确定,绝对路径从根目录(用/表示)开始,相对路径指相对于工作目录而言,工作目录是指当前所处的目录,进程可以通过使用系统调用改变当前工作目录,对于没有以斜线开头的路径,将默认从该目录开始。
文件描述符
在读写文件之前,首先要打开文件,检查其访问权,若权限许可,返回一个小整数,称为文件描述符,若禁止访问,返回一个错误码。文件描述符是一个索引值,用于进程标识已打开的文件,在进程中存在一个文件描述符表(类似于数组),为文件描述符——文件指针对。
UNIX中的特殊文件
作用:使IO设备看起来像文件一般,有两类特殊文件:块特殊文件和字符特殊文件,块特殊文件代指那些可以随机存取的块组成的设备,例如硬盘,字符特殊文件代指那些接受或输出字符流的设备(硬盘是字节流)。
管道
管道是一种虚文件,可以连接两个进程,这样,两个程序便可以通过管道传输数据。
shell与GUI
shell指字符交互界面(相当于命令行),GUI指图形化用户界面。