转自Toyix OS广场
[ sysnap 发表于 2008-01-10 19:01 ]
我们要明确"进程"只是个概念而已,它所代表的含义到底是什么呢
还是从头说起吧
我们为什么要用计算机?答案很简单:要使用计算机的cpu,让它的高速度来帮助完成复杂而重复的计算;要利用计算机的一些外部设备,用硬盘来存储数据,用打印机来打印资料,用显示器看电影等等.
我们怎么用这些资源呢?呵呵:当然是我们要写代码了,让cpu来执行它.即我们通过自己的代码来控制cpu,来达到使用计算机的资源的目的.说白了,就是当我的程序运行这个过程中,我们的程序就可以使用计算机的所有硬件设备.
什么是进程?上面说了,程序的运行过程就是在控制计算机.我们把"程序的运行过程"这个名词,使用"进程"这个名词代替.
进程可以控制计算机所有的资源.
这就是进程.
[ abcabc 发表于 2008-01-10 20:03 ]
信号量机制是荷兰学者Dijkstra在1965年提出的,主要解决进程的同步问题。
信号量S被定义为一个整形变量,对它的操作为:设置信号量初始值的操作、P原语操作、V原语操作。
P原语操作:
(1)S减1;
(2)若S减1后仍大于或等于零,则进程继续执行;
(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。
V原语操作:
(1)S加1;
(2)若相加结果大于零,则进程继续执行;
(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。
Toyix中对应的描述:
信号量类型:semaphore数据类型
信号量的初始化:函数void set(semaphore far *p, int a);
P原语操作:函数void p(semaphore far *p);
V原语操作:函数void v(semaphore far *p);
[ abcabc 发表于 2008-01-10 20:11 ]
进程创建主要包括:进程的创建、进程的撤销、进程的阻塞、进程唤醒。
toyix下对应的函数
进程创建:fork、frk
进程撤销:执行完了就被撤销了
进程阻塞:sleep
进程唤醒:wakeup
- [ltp1234] push cx add si,1 ;结果的数字个数 04/09 01:58
- [ltp1234] 写的很好!! 04/08 23:48
- [游客] 我也不知道说些什么 挺一下好啦 04/03 20:50
- [e56004474] 没事的话,别坐电车。 据说。。。 03/17 18:52
- [waasmedu] 拜读!受教!! 12/21 11:18
- [chinatree] 不错,顶。 12/05 03:32
- [ljl] 晕,最后一题也没有想到。。。 12/04 14:56
- [mouse] 楼上的看错了,填空位置填inc cx,就是为了找到第一个值为0的byte 07/29 15:37
- [wbkyh] 检测点9.2中,loop s指令有问题,该指令执行后,cx=cx-1,如果cx=0,则循环结束,也就 06/28 09:32
- [游客] 结果是1,*p取得的是a的地址中的内容,也就是a的值 06/08 00:22
- [lp1989] 请教一道题: 在数据段BUF下开始已定义了信息“I LIKE IBM-PC”, 编写在屏 幕上显 12/29 13:32
- [fangaiyisheng] 飘过,很好 ,很强大! 06/18 06:05
- [游客] [ lyh1984 发表于 2009-06-26 10:39 ] 请问一下,我用DEB 07/15 10:59
- [lyh1984] 请问一下,我用DEBUG为什么调不出字符串呢?我想知道你们是怎么调的,是用CMD DEBUG吗? 06/26 10:39
- [q470393267] 我看你头像半天了,那猫和老鼠能抗啊都没有死~ 05/05 21:31
- [fangyugirl] 经过上机DEBUG,我已经知道问题在哪里了,谢谢你呀。 04/09 10:31
- [fangyugirl] 我是想问你第10章的第三个子程序,这个子程序我现在主要的问题是12666/10会产生溢出,所以我调用 04/09 09:57
- [mouse] [ wangping198611 发表于 2009-03-23 11:43 ] 03/31 10:28
- [mouse] miaozaoyang 发表于 2009-03-29 22:31 ] [ 删除留 03/31 10:23
- [miaozaoyang] 又得问你个问题了,不知道为什么,实验15 不能够正常进行,程序应该是没有任何问题的,还是操作系统的问 03/29 22:31