美文网首页
进程_线程_管道

进程_线程_管道

作者: YQY_苑 | 来源:发表于2018-08-05 22:36 被阅读0次

1. 简述Linux操作系统内核的作用和解决的问题

  1. Linux操作系统内核主要功能是管理和操纵计算机硬件,对计算机硬件资源进行抽象,隐藏硬件具体参数细节. 为上层应用程序和用户提供一个抽象层次更高, 使用更加简便的交互接口 ---> 系统调用 ---> 系统库 ---> Shell.

2. 进程_线程

【个人简易理解】

举个例子:一台四核电脑,可同时运行多个软件【word,ppt…】,开启的word软件算是一个进程,然后在软件里面进行编辑、同时也在统计字数等操作,就是同一个进程里面多个线程。这多个线程均能访问word中的内容,但是线程之间并没有任何关联。

进程:活的程序,正在运行的程序;【线程的容器】;
线程:可共享进程的内存空间。【可共享进程的堆空间,不共享栈】
程序:死的进程,一个还没有运行的进程。

【操作系统面试题】

  1. 进程和线程的区别?
    解析:
    1.1 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元
    1.2 同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。
    1.3 进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束
    1.4 线程是轻两级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的
    1.5 线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源
    1.6 线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志

3. 管道

管道pipe:管道是一种半双工的通信方式,数据只能单向流动。管道是一种两个进程间进行单向通信的机制。在Shell中, 使用 "|" 来定义管道来把一个命令的输出通过"管道"传输到另一个程序的输入

  1. 其本质是一个伪文件(实为内核缓冲区)
  2. 由两个文件描述符引用,一个表示读端,一个表示写端。
  3. 规定数据从管道的写端流入管道,从读端流出。

管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。

【个人简易理解】

就是在输出的同时是下一个操作的输入,这个过程就是管道。

例如:

  • Linux中一切皆为文件。
    • 标准输出【读取StdOut】
    • 标准输入【写入StdIn】
    • 标准错误【StdErr】

【个人简易理解】

就是為了操作的一致性。即使是硬件,也可以利用系統調用進行讀寫操作。

从键盘、鼠标输入到显示屏显示的过程,都是一个个文件到输入输出的过程。
例如:鼠标点击事件,鼠标硬件检测到压力,然后发送信号给内核接收,内核读取到信号,发内容发给各个部件【例如显卡】,最终到显示。中间就是输入输出的过程
例如,在cmd输入cat /dev/urandom > /dev/dsp,扬声器就会输出噪音。这就是cmd【系统调用】到硬件的过程。

image.png

【参考】
操作系统面试题

相关文章

  • iOS多线程编程入门

    进程 线程 进程占据内存,而线程占据CPU。一个进程可以有多个线程,进程之间可以通过管道 或者套接字(Socket...

  • 进程_线程_管道

    1. 简述Linux操作系统内核的作用和解决的问题 Linux操作系统内核主要功能是管理和操纵计算机硬件,对计算机...

  • 浏览器运行原理

    进程 申请和拥有计算机资源 不同进程间通信通过进程间通信管道IPC 线程 一个进程多个线程,每个线程执行不同的任务...

  • 基础篇:深入JMM内存模型volatile、synchroniz

    先介绍下多进程多线程在linux几种通信方式 管道:管道的实质是一个内核缓冲区,需要通信的两个进程各在管道的两端,...

  • java并发入门

    一、进程 在多进程设计中各进程之间的数据块是相互独立,彼此通过信号、管道进行通信。而在多线程设计中,各线程不一定独...

  • 进程与线程的关系

    进程是资源分配的最小单位,线程是程序执行的最小单位 进程存储空间独立,进程间通信 消息传递(管道、FIFO、消息...

  • Android-handler 分析

    用于同进程的不同线程进行通讯,不能用于进程间通讯,Handler机制中管道作用就是当一个线程A准备好Message...

  • Linux 进程间通信

    进程间通信 一 进程间通信 -- 管道 mkfifo test 创建管道文件 匿名管道和命名管道:匿名管道:匿名管...

  • 2018-04-02

    python高级 多线程通讯 队列 Queue---来完成多进程间的数据传递 管道 Pipe---方式单...

  • 进程间通信

    声明:图片资源摘自于网络 管道(PIPE) 有名管道(FIFO) 进程1 进程2 高级管道(popen) 共享内存...

网友评论

      本文标题:进程_线程_管道

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