您的位置:首页 > 运维架构

LeetCode 【Operating System】(一)

2018-04-12 02:29 134 查看
Linux 指令 ls的效果

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

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

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

forking vs multithreading

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语句直接可以看到位置的变动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统 leetcode