linux杂七杂八

linux五种网络IO模型:阻塞型IO,非阻塞性IO,IO多路复用,信号驱动IO和异步IO,网络IO的本质就是socket的读取

  • 阻塞io:应用程序一直询问内核是否可以进行io操作

  • 非阻塞io就是systemcall发起IO操作之后,一直主动询问内核可以执行io操作了吗,在询问之后这个任务期间可以做其他操作

  • io多路复用就是有select等函数帮我们监听是否可以进行io操作了,可以同时监听多个任务的io操作,高并发采用这种方式

  • 信号驱动io也是同步,只是通过回调或者信号的方式,被动知道了什么时候可以io操作了

  • 异步io就是发起systemcall之后,继续执行下个任务,通过回调的方式,直接获取io执行成功或者失败的结果,不用应用程序自己执行io操作

  • 所以高并发都是采用这种模式,而不是采用多任务加上阻塞的方式,因为那样比较消耗资源

  • 具体内容可见:linux中的IO模型这个

  • select,poll和epoll

    • select==>时间复杂度O(n)

      • 无差别轮询所有IO流,找出能读出数据,或者写入数据的流,对他们进行操作。

    • poll==>时间复杂度O(n)

      • poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的.

    • epoll==>时间复杂度O(1)

      • epoll可以理解为event poll,不同于忙轮询和无差别轮询,epoll会把哪个流发生了怎样的I/O事件通知我们。所以我们说epoll实际上是事件驱动(每个事件关联上fd)的,此时我们对这些流的操作都是有意义的。(复杂度降低到了O(1)

网路IO与磁盘IO

进程线程协程

  • 操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。

  • 线程可以说是轻量级进程,一个进程至少有一个线程,线程之间共享资源,线程是调度和分配的基本单位。

  • 进程是拥有系统资源独立单位,而线程没有,进程切换消耗资源较大

  • 协程,是一种比线程更加轻量级的存在,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源(因为资源调度的基本单位是线程,协程依附于线程)。 更多可见这里

linux中各种查看命令

  • ps(process show,进程查看)

  • lsof(lists openfiles) 

  • netstat(Netstat 命令用于显示各种网络相关信息,如网络连接,路由表)

    • netstat -entlp(n:拒绝显示别名,尽量用数字显示;t:tcp相关;l:listening;p:显示建立相关链接的程序名;e:显示扩展信息,例如uid等)

  • top:查看系统总体情况

  • free:查看内存使用

  • cpu:

  • df(查看磁盘使用空间)

    • df -h:查看磁盘总体使用空间  

    • cat /proc/partitions:查看磁盘分区情况 

  • 查看某个目录下文件个数:ls  目录 |wc-l

    查看文件大小:Du -sh

systemctl

  • systemctl [command] [unit]

    command 主要有:

    start:立刻启动后面接的 unit。

    stop:立刻关闭后面接的 unit。

    restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。

    reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。

    enable:设置下次开机时,后面接的 unit 会被启动。

    disable:设置下次开机时,后面接的 unit 不会被启动。

    status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。

    is-active:目前有没有正在运行中。

    is-enable:开机时有没有默认要启用这个 unit。

    kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。

    show:列出 unit 的配置。

    mask:注销 unit,注销后你就无法启动这个 unit 了。

    unmask:取消对 unit 的注销。

aptitude与apt install

原文地址:https://www.cnblogs.com/ycg-blog/p/12762231.html