LeetCode 【Operating System】(一)

1 Linux 指令 ls的效果

列出当前目录下的文件和目录。

2 怎么写一个线程安全的代码?线程安全的代码是怎样的?

据说是Adobe的面试题目。
有一种说法是:同步锁,Java的Synchronized关键字
有一种说法是:当前并行计算在不同机器上差异很大,这点我不懂,留待以后看看。
忽然想到了Java的String和StringBuffer的区别。
Python我还不会多线程,如果遇到了要仔细思考。
【我的思考:】
线程安全一般是在项目架构就要开始考虑的问题吧,线程安全的问题都解决不了,怎么去考虑高并发?
从系统分析的角度应该运用一些策略:FIFO,加锁之类的。锁也要看怎么锁,Java版的剑指offer前面的一章节中,就写出了五种锁。
线程安全的代码应该可以参考其中第四、五种。写在静态类中,到了对象开始初始化的时候加锁,提高资源占用率。

3 segmentation fault的问题怎么debug;最好的避免segmentation fault的做法?

segmentation是内存分段,这个问题应该是C语言的常见问题。无法访问内存单元,就会报错。可以看内存资料来了解这个错误的流程。
按照这篇博文中提出的方法去套bug,大部分情况能找到原因。或者设置断点和assert逐步检查。
综上为:访问类型错了;访问的进程地址错了;引用空指针;栈和堆溢出;系统调用参数错了。
避免做法:现在的大部分语言都很高级,这个问题基本已经可以避免。垃圾回收也能大部分的避免我们new了之后没有释放的窘境。当养成好的编码习惯还是有必要的,其次多看代码源码,增强自己每个类中的逻辑完整性。养成项目全局意识。

4 what happens in the background from the time you press the Power button until the Linux login prompt appears?

按下电源键,到Linux登陆出现,桌面会发生什么?
power on-> BIOS->kernal->Command Shell->GUI
我缩略了一下,记住了我能理解和说出来的。
最近偶尔也会看产品类的书籍,感觉多看看操作系统的设计其实对产品的交互设计有好处,毕竟最初的互联网产品就是计算机啊。
这个问题中,有人提出了对比Windows、mac os三者的区别。很有意思。

5 forking vs multithreading

分支和多线程的区别。
分支:只是一个线程中,从当前节点保留一些数据,开始进入了其他代码段中运行,不涉及共享资源的问题;而多线程是多个啊,涉及共享资源的问题。
忽然想到了大学时期的汇编课上,有个code segment,可以看代码段运行的位置,IF语句直接可以看到位置的变动。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值