美文网首页
操作系统(三)

操作系统(三)

作者: 焰火青春 | 来源:发表于2020-06-25 22:36 被阅读0次

1. 操作系统考察点

大部分企业应用跑在 Linux server 上,因此需要具备以下几点:

  • 熟练在 Linux 服务器上操作
  • 了解 Linux 工作原理和常用工具
  • 需要了解查看文件、进程、内存相关的一些命令,用来调试和排查

查询 Linux 命令用法

  • man 命令,晦涩难懂
  • help 命令
  • man 的替代品,tldr pip install tldr(tldr 命令)

1.1 文件/目录操作命令

  • chown、chmod、chgrp
  • ls、rm、cd、cp、mv、touch、rename、ln(软连接、硬链接)
  • locate、find、grep 定位查找和搜索

文件或日志查看工具

  • 编辑器 vi/nano
  • cat 、head、tail 查看文件
  • more、less 交互式查看文件

1.2 进程操作命令

  • ps 查看进程
  • kill 杀死进程(以及kill 的原理)
  • top 、htop 监控进程

1.3 内存操作命令

  • free 查看可用内存
  • 了解每一列的具体含义
  • 排查内存泄露问题

1.4 网络操作命令

  • ifconfig 查看网卡信息
  • lsof 、netstat 查看端口信息
  • ssh、scp 远程登录 、赋值 tcpdup 抓包

1.5 用户、组操作命令

  • useradd、usermod
  • groupadd、groupmod

1.6 线程与进程区别

  • 进程是对运行时程序的封装,是系统资源调度和分配的基本单位
  • 线程是进程的子任务, cpu调度和分配的基本单位, 实现进程内并发
  • 一个进程可以包含多个线程, 依赖于进程存在, 共享进程内存

什么是线程安全

一个线程的修改被另一个线程的修改覆盖了,加锁保证不被修改

Python 哪些操作时线程安全的?

  • 一个操作可以在多线程环境中安全使用,获取正确结果
  • 线程安全的操作比线程是顺序执行而不是顺序执行的 i+= 1,原子操作时安全的。
  • 设计到写操作就要设计到线程安全

线程同步方式

  • 互斥量(锁):通过互斥机制放置多个线程同时访问公共资源(同一时间只能一个线程)
  • 信号量 semphare :控制同时时刻多个线程访问同一个资源的线程数
  • 事件(threading。Event):通过通知的方式保证多个同步

进程间通讯方式

  • 管道、匿名管道、有名管道 pipe- 信号 signal:比如用户 ctrl+c 产生 SIGINT 程序终止信号
  • 消息队列 Message: RabbitMQ
  • 共享内存:share memory
  • 信号量
  • 套接字 socket:最常用的方式

1.7 Python 多线程和多进程

  • threading 模块
  • Thread 类来创建多线程
  • start() 启动线程
  • 用 join 等待线程结束

多进程

  • multiprocessing 模块
  • Process 类创建
  • cpu 密集型程序里使用多进程,避免GIL 影响
    [图片上传失败...(image-6498a-1593095732636)]

2. 操作系统内存管理机制常见考题

2.1 什么是分页机制

是为了减少内存碎片、高效机制 ,逻辑地址和物理地址分离的内存分配管理方案

  • 程序的逻辑地址划分为固定大小的 Page
  • 物理地址划分为同样大小的帧 Frame
  • 通过页表对应逻辑地址和物理地址

[图片上传失败...(image-d72a7e-1593095732636)]

2.2 分段机制

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

[图片上传失败...(image-60fcc7-1593095732636)]

分页和分段区别

  • 出于内存利用率的角度提出的离散分配机制
  • 出于用户角度,用于数据保护、数据隔离等用途的管理机制
  • 页的大小固定,操作系统决定,段的大小不确定,用户程度决定

2.3 虚拟内存

把一部分暂时不用的内存信息放在硬盘:程序运行时只有部分必要的信息放内存

  • 内存暂时不需要的内容放硬盘上
  • 系统似乎提供比实际内存大得多的容量,称为虚拟内存

2.4 内存抖动(颠簸)产生的原因

  • 频繁的页调度,进程不断产生缺页中断
  • 置换一个页,又不断再次需要这个页
  • 运行程序太多,页面替换策略不好,终止进程或增加物理内存

2.5 Python 垃圾回收机制原理

Python 不需要像 C 语言手动回收内存,它会自动回收内存:

  • 引用计数为主(缺点:循环引用无法解决)
  • 引入标记清除和分代回收解决引用计数的问题
  • 引用计数为主+标记清除和分代回收为辅


    image

当引用计数为 0,就会回收掉。

# 查看引用计数,调用也会增加
import sys

a= [1, 2]
sys.getrefcount(a)
2

b= 1
sysgetrefcount(1)
2900  

循环引用

当两个对象互相引用之后,引用计数无法清零即循环引用,这种情况可能会导致内存泄露,我们可以使用 标记清除 的方式解决循环引用的问题。

image image

线程练习题

  • 某些多线程爬虫
  • threading 模块
  • 要求1:该类可以传入最大线程数和需要抓取的网站列表
  • 要求2:该类可以通过继承的方式提供一个处理 response 的方法。

3. 面试题

1、讲一下你常用的Linux/git命令和作用

  • ls:查看目录中所有文件
  • ifconfig:查看 ip
  • ps:查看进程
  • kill:杀死进程
  • apt-get install:安装软件
  • git init:初始化版本库
  • git add .:添加所有更新
  • git commit:提交
  • git push remote origin xxx:与远程库关联
  • git pull -u origin master:推送

2、查看当前进程是用什么命令,除了文件相关的操作外,你平时还有什么操作命令

ps -ef | grep redis
mv a.txt /home/hj/b.txt
vim a.txt
cp a.txt /b.txt
rm -r
cat。。。
pwd
cd
mkdir
find  / --name a.txt

1、讲一下你常用的Linux/git命令和作用

  • ls:查看目录中所有文件
  • ifconfig:查看 ip
  • ps:查看进程
  • kill:杀死进程
  • apt-get install:安装软件
  • git init:初始化版本库
  • git add .:添加所有更新
  • git commit:提交
  • git push remote origin xxx:与远程库关联
  • git pull -u origin master:推送

2、查看当前进程是用什么命令,除了文件相关的操作外,你平时还有什么操作命令

ps -ef | grep redis
mv a.txt /home/hj/b.txt
vim a.txt
cp a.txt /b.txt
rm -r
cat。。。
pwd
cd
mkdir
find  / --name a.txt

3、Git

个分布式版本控制系统,两个重要功能:版本控制和协作开发

常用命令:

git init    # 初始化
git add .   # 添加所有,添加到暂存区
git commit -m   # 提交到版本库
git  status     # 查看工作区状态
git log --pretty=oneline    # 查看提交记录
git reset --hard HEAD^      # 回到上一个版本
git reset --hard 8e882b     # 实际只需要前 6 位即可
git branch          # 查看所有分支,带星号的为当前分支
git checkout master         # 切换到 master 分支
git merge 分支名           # 合并分支

将本地推送到远程:

# github 新建仓库
# 切换到要推送的文件夹中
git init        # 初始化版本库
git add .       # 添加到暂存区
git  commit -m 'xxx'        # 提交到版本库
git remote add origin https://github.com/xxx        # 与 github 上仓库关联
git pull --rebase origin master     # 拉取远端最新的代码(其实是将远端的 readme.md 文件与本地的合并在一起,解决冲突)
git push -u origin master           # 推送

相关文章

  • Linux操作系统与Windows操作系统有什么区别?

    操作系统界有三大巨头,他们分别是苹果操作系统、Linux操作系统、Windows操作系统,深入追究下来,他们有同一...

  • 三大操作系统之linux

    三大操作系统之linux 姓名:高浪 【嵌牛导读】windows, macOS, linux是当今主流三大操作系统...

  • 操作系统(三)

    1. 操作系统考察点 大部分企业应用跑在 Linux server 上,因此需要具备以下几点: 熟练在 Linux...

  • 北林 -- 操作系统复习

    北林操作系统2015级教材用书:《操作系统实用教程》第三版 任爱华,王雷 概念题: 实时操作系统:指操作系统能及时...

  • 为什么程序员要会linux

    三大操作系统概述 windows, macOS, linux是当今主流三大操作系统,普通用户一般是选择window...

  • 为什么程序员要会 Linux

    三大操作系统概述 Windows, MacOS, Linux是当今主流三大操作系统,普通用户一般是选择Window...

  • Linux基础

    当前市面上有三大操作系统:Windows, Linux,OS X。首先我们先来简单了解一下三大操作系统的小历史。 ...

  • 今天,我的三观

    缘起: ①电脑的操作系统:输入条件,便按照预设的程序运行。 ②个人的操作系统:三观~每次遇到相应的场景,就会按三观...

  • 信息产业三大难题

    一、CPU二、操作系统三、编译器

  • 操作系统笔记0-前言

    前言 主要记录大三学习操作系统的整理笔记。 操作系统(英语:operating system,缩写作 OS)是管理...

网友评论

      本文标题:操作系统(三)

      本文链接:https://www.haomeiwen.com/subject/nsvefktx.html