操作系统

协程,线程,进程,以及区别

操作系统为了跟踪每个进程的活动状态,维护了一个进程表。进程表的内部列出了每个进程的状态以及每个进程使用的资源等。

进程:正在执行程序的一个实例,是资源分配的基本单位。(进程控制块(process control block)描述进程的基本信息和运行状态,所谓的创建和撤销进程,都是指对PCB的操作)
线程:进程中的单条流向,是程序独立调度的基本单位。

区别:

  1. (拥有资源)一个进程可以有多个线程,由于线程不拥有资源,这几个线程共享进程内的资源。
  2. (资源开销)创建和撤销线程比进程开销小很多,因为创建线程仅仅需要堆栈空间以及程序计数器就可以了而创建进程需要分配地址空间,数据资源等,开销比较大。
  3. (调度)由于线程是独立调度的基本单位,同一进程中线程的切换不会引起进程的切换,但是两个不同进程中的线程切换会引起进程切换。
  4. (通信)线程可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助IPC。

进程之间如何通信

进程间通信:(Inter process communication)
几种方式:

  1. 消息队列:消息队列是内核中存储消息的链表,它由消息队列标识符进行标识,这种方式能够在不同的进程中间提供全双工通信连接
  2. 管道:用于两个相关进程间通信,是一种半双工的通信方式,只能在父子进程中使用,如果需要全双工,需要另外的一个管道。
  3. 先进先出队列:两个不相关的进程之间的通信,是一种全双工的通信方式。同时不需要父子进程关系。
  4. 套接字:与其他通信方式不同,可以用于不同机器之间的进程通信。
  5. 信号量:是一个计数器,用于为多个进程提供对共享数据对象的访问
  6. 共享内存:使用所有进程的内存来建立连接,不过需要同步进程(信号量)来保护访问。是最快的IPC方式。
  7. 直接通信:进程间只存在一条连接,因此要明确双方的命名。
  8. 间接通信:通信双方不会直接建立连接,通过一个中介,进程可以在中介放置和删除消息以此达到进程通信
  9. 消息传递:消息传递是进程间实现通信和同步等待的机制。消息直接由发送方传递给接收方。

  1. 内核态线程和用户态线程的区别如何切换
  2. 上下文切换的细节
  3. 进程和线程的区别
  4. 了解虚拟内存吗?什么是虚拟内存?为什么要有虚拟内存?
  5. 线程的上下文切换
  6. 用户态和内核态

计算机网络

  1. udp tcp 以及区别:1CC069D2-AFAA-4B03-857C-55A53DFF4951

    UDP(User Datagram Protocol) TCP(Transmission Control Protocol)
    无连接 面向连接
    支持一对一,一对多,多对一,多对多通信 因为双方需要提前建立连接,因此只能一对一进行通信(全双工:双方随时都可以发送和接收数据)
    面向报文段(对应用层发送的报文段直接添加首部并传送到IP) 面向字节流
    不保证可靠交付:尽最大努力交付,不使用流量控制和拥塞控制 可靠传输,使用确认序号,滑动窗口,流量控制以及拥塞控制等来实现可靠传输
    首部只有8字节 首部最小有20自己,最大有60字节s
  2. 输入url发生了什么 或者 用户在浏览器输入网址后到呈现页面的详细步骤 4次

  3. http和https的区别

    1. Http传输信息是明文传输,而使用Https在tcp和http之间加入了SSL/TLS安全协议,使得报文可以加密传输
    2. http建立连接相对简单,只需要tcp3次连接即可,而https除了tcp建立连接的3次过程还需要SSL/TKS的握手过程
    3. http端口号是80,而https端口号是443
    4. https协议需要向CA申请数字证书,来保证服务器身份是可信的。
  4. 三次握手四次挥手,拥塞控制

  5. arp协议

  6. 计网转发分组的详细过程

  7. tcp访问一个主机如果主机端口不存在返回什么信息 我说应该是time out吧

  8. 网络的整个协议栈

  9. 一个tcp程序的具体步骤

  10. 说说你所知道的网络定时器的机制

  11. 问了网络的协议栈 为什么要分层

  12. 网络连接的各层的状态

  13. 说一下URL的格式,越详细越好

  14. http的请求方法有哪些

  15. get与post的区别

    1. get方法是从服务器获取资源,而post则是向URI指定的资源提交数据,数据就存放在报文的body里面
    2. get方法是安全和幂等的,而post方法不是安全和幂等的。(安全是指请求方法不会破坏服务器上的资源,幂等是指多次执行相同的操作结果都是相同的。因为post方法每次新增或提交数据的操作都会修改服务器上的资源,所以是不安全的,且多次提交之后就会新建多个资源,所以不是幂等的)
  16. HTTP 请求的报文格式

  17. TIME_WAIT?有什么方法可以避免 TIME_WAIT?TIME_WAIT 是主动断开连接的一方还是被动断开的一方?

评论