LeetCode 【Operating System】(二)

最近看的书好杂乱,基础知识的学习也没能坚持住。反思之后,决定开始按部就班的学习项目和基础。
个人不喜欢刷OJ,最近倒是看了看codewar。依旧当做小习惯坚持。代码最短意味着高逻辑,代码的可读性就会差很多。好吧,是我的反应慢。我喜欢把代码写的简单大方。扯远了,今天继续答OS。

这里补充一段,昨天吃饭的时候,和朋友说起代码习惯。

if x == 10:
    return true
return false

这种代码应该被唾弃,所以要看别人的源码,return x == 10才是正确的打开方式。

-1- interrupt vs system call 中断和系统调用
中断有三类:
**1>**CPU外部,I/O中断,时钟中断,控制台中断
**2>**CPU内部,异常(CPU故障,代码故障)
**3>**program uses request, causing a trap, it’s an interrupt.无意、被动。
中断处理:保存寄存器,核心调用中断处理程序。
详解中断
**系统调用:**CPU核心对我们的program是untrust,所以要调用系统API去完成相关操作。
参考资料

-2- What is wrong with the code : x = x + a , in context of a concurrent system?
并发,我目前最讨厌的词语没有之一。每次面试总会被问到,顺带立个flag,一定要写出一个高并发的系统,体验一回精通并发是什么感觉。
闲话少叙,什么是并发?我的理解是多线程轮流使用处理器。那么做个加法怎么了?按照评论的解释,做加法有三步,第一步取出来x,第二步做加法,第三步,放回寄存器。于是问题发生了,线程1做加法的同时,线程2取x,取出的是old_x,并不准确。所以,安全的做法是写个锁。
顺带复习一下并行。
并行就是两个咖啡厅,两队人,各排各的队伍,各喝各的咖啡,没有共享资源。多处理器并行,单处理器并发。

-3-What are the steps involved when switching from one thread to another thread in multi threading program?
多线程程序切换线程的步骤:
1>保存当前进程的寄存器,将保存的PCB存入等待队列ReadyQueue
2>运行新的线程,运行结束之后,从等待队列取出PCB,恢复之前的状态,继续运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值