计算机操作系统 实验一:进程观测

1.实验目的:

(1)了解在Linux操作系统中进程的特点和表现形式

(2)掌握Linux查看进程的方式与方法

(3)在一个进程中创建另一个进程的方法

(4)掌握父进程和子进程的关系和fork的用法

 

2.实验内容:

(1)编写一个简单的程序,使用ps或top工具观察该进程的的ID号,并使用kill工具终止进程运行。

(2)编写一个程序,使用fork函数生成一个子进程,并使用相关工具观察进程状态。

若将上述实例(2),改写为:

#include <sys/types.h>   

#include <unistd.h>

void main()

{

    int i;

    if ( fork() == 0 )

    {

       /* 子进程程序 */

       for ( ;; )

          printf("This is child process\n");

    }

    else

    {

       /* 父进程程序*/

       for ( i = 1; i <1000; i ++ )

          printf("This is process process\n");

    }

}

 

若将将实例(2)改为:

#include <sys/types.h>   

#include <unistd.h>

void main()

{

    int i;

    if ( fork() == 0 )

    {

       /* 子进程程序 */

       for ( ;; )

          printf("This is child process\n");

    }

    else

    {

       /* 父进程程序*/

       for (;;)

          printf("This is process process\n");

    }

}

 

3.实验步骤:

(1)编写一个简单的程序,使用ps或top工具观察该进程的的ID号,并使用kill工具终止进程运行。

#include <stdio.h>

int main()

{

    while(1)

    {

        printf("I am the first process!\n");

    }

    return 0;

}

(2)编写一个程序,使用fork函数生成一个子进程,并使用相关工具观察进程状态。

#include <sys/types.h>   

#include <unistd.h>

void main()

{

    int i;

    if ( fork() == 0 )

    {

       /* 子进程程序 */

       for ( i = 1; i <1000; i ++ )

          printf("This is child process\n");

    }

    else

    {

       /* 父进程程序*/

       for ( i = 1; i <1000; i ++ )

          printf("This is process process\n");

    }

}

 

若将上述实例(2),改写为:

#include <sys/types.h>   

#include <unistd.h>

void main()

{

    int i;

    if ( fork() == 0 )

    {

       /* 子进程程序 */

       for ( ;; )

          printf("This is child process\n");

    }

    else

    {

       /* 父进程程序*/

       for ( i = 1; i <1000; i ++ )

          printf("This is process process\n");

    }

}

 

若将将实例(2)改为:

#include <sys/types.h>   

#include <unistd.h>

void main()

{

    int i;

    if ( fork() == 0 )

    {

       /* 子进程程序 */

       for ( ;; )

          printf("This is child process\n");

    }

    else

    {

       /* 父进程程序*/

       for (;;)

          printf("This is process process\n");

    }

}

 

Windows 2000可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序。控制台应用程序可以创建GUI,GUI应用程序可以作为服务来运行,服务也可以向标准的输出流写入数据。不同类型应用程序间的惟一重要区别是其启动方法。 Windows 2000是以NT的技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。当系统运行时,Windows 2000的服务通常要向系统用户提供所需功能。 服务应用程序类型需要ServiceMail() 函数,由服务控制管理器 (SCM) 加以调用。SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。其本身负责使应用程序的行为像一个服务。通常,服务登录到特殊的LocalSystem账下,此账具有与开发人员创建的服务不同的权限。 当令C++ 编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。装载器指令告诉系统从哪里装载机器代码。另一个装载器指令告诉系统从哪里开始执行进程的主线程。在进行某些设置后,进入开发者提供的main() 、ServiceMain() 或WinMain() 函数的低级入口点。机器代码中包括有控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等。 Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库 (DLL) 代码块,在其中包含应用程序使用的机器代码和应用程序的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值