Linux进程概念

本文介绍冯诺依曼体系结构下计算机的工作原理,包括内存、输入输出设备的角色及操作系统(OS)的作用。深入探讨了操作系统如何管理硬件资源,解释了系统调用、库函数的概念,并介绍了进程的基本概念及其在操作系统中的管理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

冯诺依曼体系结构:

这里的存储器指的是内存,在不考虑缓存的情况下,输入输出设备只能与内存进行数据写入或读取,不能直接与CPU“沟通”

内存可以与任何设备直接进行打交道

操作系统OS(基本的程序集合):是一款纯正“搞管理”的软件

1.内核(文件管理、进程管理、内存管理、驱动管理)

2.其他程序(shell程序、函数库等等)

设计OS的目的:

1.管理所有的硬件程序

2.为用户程序提供一个良好的执行环境

系统调用:在开发者的角度,操作系统可以看成是一个整体,但会暴露出一部分接口供上层开发者使用,这部分由操作系统提供的接口就叫系统调用

库函数:开发者对部分系统调用进行封装,就形成库,它是供更上层用户或者开发者进行二次开发

进程:课本上描述它是程序的一个执行实例,正在执行的一个程序等,但是站在内核的角度上,进程就是一个承担着分配系统资源(CPU时间、内存)的实体

操作系统对进程的管理方式:描述进程、组织进程

描述进程(PCB):是进程属性的集合,是一种叫做进程控制块的数据结构。在linux中描述进程的结构体叫task_struct,它被装载在RAM(内存)中并且包含着进程的信息。linux中所有运行在系统里的进程,都以task_struct链表的形式存放在内核里

进程的获取:getpid()获取子进程,getppid()获取父进程

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<sys/types.h>
  4 int main()
  5 {
  6     printf("pid:%d",getpid());
  7     printf("ppid:%d",getppid());                                            
  8     return 0 ;
  9 }

进程的创建:fork(),函数返回值有两个,等于0为子进程,大于0为父进程,父子进程代码共享,数据各自开辟空间,私有一份

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<unistd.h>
  4 #include<sys/types.h>
  5 int main()
  6 {
  7     int ret=fork();
  8     if(ret<0)
  9     {
 10         perror("fork");
 11         return 1;
 12     }
 13     else if(ret==0)
 14     {
 15         printf(" i  am  child  :%d   ret:%d",getpid(),ret);
 16     }
 17     else                                                                    
 18     {
 19         printf("i am father : %d  ret :%d",getpid(),ret);
 20     }
 21     sleep(1);
 22     return 0;
 23 }

进程的几种状态:

R(running):运行状态,但进程不一定正在运行,还可能在运行队列里

S(sleep):睡眠状态,意味着进程在等待事件完成(这里的睡眠状态有时候也叫做可中断睡眠)

D(disk sleep):磁盘休眠状态,这个状态的进程等待IO的结束,(有时候也叫做不可中断休眠)

T(stopped):停止状态,可以通过发送sigstop来给进程停止进程,这个被停止的进程可以通过发送sigcont来让进程继续运行

X(dead):死亡状态,只是一种返回状态,在任务列表里无法看见

进程状态修改:用kill将T状态改为R状态

kill -l 查看系统支持的信号列表

kill  SIGSTOP  pid

kill SIGCONT  pid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值