Linux系统原理知识 进程切换的概念介绍
一、tast_struct结构
它是一个数据结构,可以说,它代表了一个进程。它有很多字段,大体有一下几种:
标识号:进程标识、用户标识、组标识。
状态: Linux的进程的四种基本状态
调度信息:优先级、时间片等
进程链信息:父进程、子进程的指针
文件信息:打开文件、虚拟文件系统
上下文信息:进程的运行环境
二、I386体系的任务管理和调度
I386体系从硬件上支持任务间的切换。为此目的,增设了一种新段:任务状态段(TSS),首先它和数据段、代码段一样也是一种段,其次它记录了任务的状态信息。
与其它段一样,也有描述它的结构:TSS描述符表,它记录了一个TSS的信息,同时还有一个TR寄存器,它指向当前任务的TSS。任务切换的时候,cpu会将原寄存器的内容写出到相应的TSS,同时将新TSS的内容填到寄存器中,这样就实现了任务的切换。
三、Linux进程切换
Linux任务切换是通过switch_to这个宏实现的,它利用长跳指令,当长跳指令的操作数是TSS描述符的时候,就会引起CPU的任务的切换,此时,cpu将所有寄存器的状态保存到当前任务寄存器TR所指向的TSS段(当前任务的任务状态段)中,然后利用长跳指令的操作数(TSS描述符)找到新任务的TSS段,并将其中的内容填写到各个寄存器中,最后,将新任务的TSS选择符更新到TR中。这样系统就正式开始运行新切换的任务了。上面提到的task_struct中的tss成员就是记录TSS段内容的。
文章来自: 好喜爱学习网(http://www.haoxiai.net) 网址:http://www.haoxiai.net/caozuoxitong/linux/140538.html
相关文档:
第一部分 第三章 Linux主机的规划
1.计算机硬件配置基本知识(略)
2.Linux中的硬件驱动号,在Linux中每个设备都被当成一个文件来处理
IDE硬盘: /dev/hd[a-d]
SCSI硬盘:/dev/sd[a-p]
U盘: &nbs ......
如果在linux C\C++环境下判断某个文件是否存在,可以使用access函数:
#include <unistd.h>
#include <stdio.h>
int main()
{
const char* file1 = "access.cpp";
const char* file2 = "access1.cpp";
& ......
1.文件的创建和读写
当我们需要打开一个文件进行读写操作的时候,我们可以使用系统调用函数open.使用完成以后我们调用另外一个close函数进行关闭操作.
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
int close(int fd);
......
++实现RedHat非正常关机的自动磁盘修复
先登录到服务器,然后在/etc/sysconfig里增加一个文件autofsck,内容如下:
AUTOFSCK_DEF_CHECK=yes
PROMPT=yes
++改变文件或目录之最后修改时间(变为当前时间)
执行格式:touch name ( name 可为文件或目录名称。)
++如何设置login后欢迎信息
修改/etc/motd,往里面写入文本 ......
Linux相比于Windows一个比较好的地方在于Linux提供了非常丰富的在线文档,更重要的是这些都是free的(下面的说明是针对debian发行版,其他的发行版情况可能会有所不同)。
Linux的在线文档大概可以分为以下几类:
(1)Man格式的手册,默认存放于/usr/share/man目录,用man命令查看。
(2)Info 格式的手册,默认存放 ......