第06章 *** 作系统考察点

第06章  *** 作系统考察点,第1张

概述Linux常考命令早期采用LAMP/LNMP架构为什么要学Linux?大部分企业应用跑在linuxserver上◆熟练在Linux服务器上 *** 作◆了解Linux工作原理和常用工具◆需要了解查看文件、进程、内存相关的一些命令,用来调试和排查如何查询linux命令的用法Linux命令众多,如何知道一个命令 linux常考命令早期采用LAMP/LNMP架构
为什么要学 linux?大部分企业应用跑在 linux server上◆熟练在 linux服务器上 *** 作◆了解 linux工作原理和常用工具◆需要了解查看文件、进程、内存相关的一些命令,用来调试和排查
如何查询linux命令的用法linux命令众多,如何知道一个命令的用法使用man命令查询用法。但是man手册比较晦涩◆使用工具自带的help,比如pip --help◆这里介绍一个man的替代工具tldr. Pip install tldr



软链接的inode 和 源文件的inode 不一样    只是创建了一个指向原文件的绝对路径,访问的时候相对于替换指向源文件的路径。
    例子:门牌号 
硬链接的inode 和 源文件是一样的      创建了一个普通文件,但是inode指向的是同一个文件(区块)    例子:开了两个门




文件/目录 *** 作命令掌握常见的文件 *** 作工具◆ chown/ chmod/ chgrp◆ ls/rm/cd/cp/mv/touch/rename/ln(软链接和硬链接)等◆ locate/find/grep 定位查找和搜索
find . -name '*.pyc' -delete
文件查看文件或者日志查看工具编辑器ⅵ/nano◆cat/head/tail查看文件◆more/less交互式查看文件

进程 *** 作命令掌握常见的进程 *** 作工具◆ps 查看进程◆kill 杀死进程◆top/htop 监控进程
内存 *** 作命令掌握常见的内存 *** 作工具◆ free 查看可用内存◆ 了解每一列的具体含义◆ 排查内存泄露问题
网络 *** 作命令掌握常见的网络工具◆ ifconfig        查看网卡信息◆ lsof/netstat    查看端口信息◆ ssh/scp远程登录/复制。 tcpdump抓包
用户/组 *** 作命令掌握常见用户和组 *** 作◆ useradd/usermod◆ groupadd/groupmod
参考学习 linux命令◆man命令可以查询用法。或者cmd-help《鸟哥的 linux私房菜》,学习简单的 shell脚本知识◆多用才能熟悉
进程和线程的区别进程和线程对比◆进程是对运行时程序的封装,是系统资源调度和分配的基本单位◆线程是进程的子任务,cpu调度和分配的基本单位,实现进程内并发◆一个进程可以包含多个线程,线程依赖进程存在,并共享进程内存
什么是线程安全Python哪些 *** 作是线程安全的?◆ 一个 *** 作可以在多线程环境中安全使用,获取正确的结果◆ 线程安全的 *** 作好比线程是顺序执行而不是并发执行的(i +=1)◆ 一般如果涉及到写 *** 作需要考虑如何让多个线程安全访问数据
import threadinglock = threading.Lock()n = [0]def foo():    with lock:        n[0] = n[0] + 1        n[0] = n[0] + 1threads = []for i in range(5000):    t = threading.Thread(target=foo)    threads.append(t)for t in threads:    t.start()print(n)



线程同步的方式了解线程同步的方式,如何保证线程安全◆互斥量(锁):通过互斥机制防止多个线程同时访问公共资源◆信号量(Semphare)控制同一时刻多个线程访问同一个资源的线程数◆事件(信号):通过通知的方式保持多个线程同步
进程间通信的方式Inter-Process Communication进程间传递信号或者数据◆管道/匿名管道/有名管道(pipe)◆信号 Signal:比如用户使用Ctrl+c产生SIGNT程序终止信号◆消息队列(Message)
Python中如何使用多线程threading模块◆ threading.Thread类用来创建线程◆ start() 方法启动线程◆ 可以用join()等待线程结束
Python中如何使用多进程Python有GIL,可以用多进程实现cpu密集程序◆ multiprocessing 多进程模块◆ Multiprocessing.Process 类实现多进程◆ 一般用在cpu密集程序里,避免GIL的影响
import multiprocessingdef fib(n):    if n <= 1:        return 1    return fib(n - 1) + fib(n - 2)if __name__ == '__main__':    jobs = []    for i in range(10, 20):        p = multiprocessing.Process(target=fib, args=(i,))        jobs.append(p)        p.start()

*** 作系统内存管理机制常见考题现代化编程语言一般有垃圾回收机制
什么是分页机制 *** 作系统为了高效管理内存,减少碎片
逻辑地址和物理地址分离的内存分配管理方案◆程序的逻辑地址划分为固定大小的页(Page)◆物理地址划分为同样大小的帧(Frame)◆通过页表对应逻辑地址和物理地址


什么是分段机制
分段是为了满足代码的一些逻辑需求◆数据共享,数据保护,动态链接等◆通过段表实现逻辑地址和物理地址的映射关系◆每个段内部是连续内存分配,段和段之间是离散分配的




分页和分段的区别分页vs分段◆页是出于内存利用率的角度提出的离散分配机制◆段是出于用户角度,用于数据保护、数据隔离等用途的管理机制◆页的大小是固定的, *** 作系统决定;段大小不确定,用户程序决定

什么是虚拟内存通过把一部分暂时不用的内存信息放到硬盘上◆局部性原理,程序运行时候只有部分必要的信息装入內存    时间局部性与空间局部性◆内存中暂时不需要的内容放到硬盘上◆系统似乎提供了比实际內存大得多的容量,称之为虚拟内存

什么是内存抖动(颠簸)本质是频繁的页调度行为◆频繁的页调度,进程不断产生缺页中断◆置换一个页,又不断再次需要这个页◆运行程序太多;页面替换策略不好。终止进程或者增加物理内存
Python的垃圾回收机制原理?Python无需我们手动回收内存?它的垃圾回收是如何实现的呢?◆引用计数为主(缺点:循环引用无法解决)◆引入标记清除和分代回收解决引用计数的问题◆引用计数为主+标记清除和分代回收为辅






小整数对象池悲剧:引用计数无法。解决循环引用问题



两个对象互相引用之后引用计数无法归零
标记清除( Mark and Sweep)


分代回收

@H_419_141@


线程练习题编写多线程爬虫如何使用 Python的 threading模块◆请你使用 Python的 threading模块完成一个多线程爬虫类◆要求1:该类可以传入最大线程数和需要抓取的网址列表◆要求2:该类可以通过继承的方式提供一个处理 response的方法
总结

以上是内存溢出为你收集整理的第06章 *** 作系统考察点全部内容,希望文章能够帮你解决第06章 *** 作系统考察点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1185246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存