进程管理

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是系统调用?它与普通的函数调用有什么不同?请简要说明系统调用的处理流程。


  1. 系统调用在用户空间进程和硬件设备之间添加了一个中间层;
    为用户空间提供了一种硬件的抽象接口;
    保证系统的稳定和安全;
    linux中系统调用是用户空间访问内核的唯一手段

  2. 普通函数调用:
    调用程序与被调用过程运行在相同状态,可直接由调用程序转向被调用过程

    系统调用:
    调用程序运行在用户态,被调用过程运行在系统态,不允许调用程序直接转向被调用过程,要通过中断及陷入机制,先由用户态转换到系统态,经过内核分析检查后,才能转向相应的内核执行被调用过程

  3. linux下系统调用的处理流程:
    1.
    用户态下 通过引发一个异常促使系统切换到内核态,(保存被中断进程的CPU现场信息。,堆栈切换到内核栈)此时的异常处理程序实际上就是系统调用处理程序。x86预定义的软中断是中断号128,通过int &0x80指令触发该中断。
    2.
    使用中断号128查找中断描述表,得到该异常的中断处理程序(system_call())的入口地址
    3.
    因为所有的系统调用陷入内核的方式都一样,因此必须把系统调用号一起传给内核(放入rax/eax)。发生陷入前还需要传递外部的参数输入 。system_call()通过将给定的系统调用号与NR_syscalls做比较来检查其有效性。通过检查,执行相应的系统调用 call *sys_call_table( , %rax, 8),在系统调用表中查询所指定的系统调用的入口地址
    4.
    执行所指定的系统调用
    (我校自编教材也称其为 系统调用服务例程
    5.
    恢复被中断进程或新调度进程的CPU现场信息,然后返回被中断进程或新调度进程,继续运行(先调度 不是直接阻塞->运行

二、在生产者-消费者问题中,如果缺少了signal(full)或signal(empty),或者将wait(full)与wait(mutex)互换位置,或者将signal(full)与signal(mutex)互换位置,那么分别有什么后果

在这里插入图片描述

  1. 缺少了signal(full)或signal(empty)
    如果缺少signal(full),那么表明从第一个生产者进程开始就没有改变信号量full 值
    即使缓冲池产品已满,但full值还是0,这样消费者进程执行wait(full)时认为缓冲池是而取不到产品,消费者进程一直处于等待状态
    如果缺少signal(empty),在生产者进程向n个缓冲区投满产品后消费者进程才开始从中取产品,这时empty=0,full=n,那么每当消费者进程取走一个产品empty值并不改直到缓冲池取空了,empty 值也是0
    即使目前缓冲池有n 个空缓冲区,生产者进程要想再往缓冲池中投放产品也会因为申请不到空缓冲区被阻塞。

  2. wait(full)与wait(mutex)互换位置
    将wait(full)和wait(mutex)互换位置后,可能引起死锁
    考虑系统中缓冲区全满时,若一生产者进程先执行了wait(mutex)操作并获得成功,则当再执行wait(empty)操作时,它将因失败而进入阻塞状态,它期待消费者进程执行signal(empty)来唤醒自己,在此之前,它不可能执行signal(mutex)操作,从而使试图通过执行wait(mutex)操作而进入自己的临界区的其他生产者和所有消费者进程全部进入阻塞状态,这样容易引起系统死锁。

  3. signal(full)与signal(mutex)互换位置
    signal(mutex)和signal(full)互换位置后只是影响进程对临界资源的释放次序,而不会引起系统死锁,因此可以互换位置。

三、

四、计算机系统中,为什么要区分管态和目态(核心态与用户态)?

计算机中,一个内核负责响应中断的中断服务程序,
负责管理多个进程从而分配处理器时间的调度程序,
负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。

为了提供保护机制,内核要独立与普通应用程序,处于系统态,拥有受保护的内存空间访问硬件设备的所有权限

应用程序不能直接访问硬件,也不能访问内核划给别人的内存范围,只能看的允许使用的部分系统资源,且只使用某些特定的系统功能

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值