美团云计算方面面试题

1、Linux进程间的通信方式?两个进程是如何来共享内存的?两个进程如何通过信号量通信?

  • Linux下进程间通信的方式有:管道(有名/无名) 、消息、信号、信号量、共享内存、邮箱、socket。
  • Linux下共享内存是进程间通信的方式之一,共享内存允许两个或多个进程访问同一块内存,比如像 malloc函数向不同的进程返回执行同一块物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其他拥有这块物理内存指针的进程也会察觉到这个更改。在进程间的通信方式中,共享内存是通信效率最高的,访问共享内存区域和访问进程独有的内存区域一样快,并不需要通过系统调用或者其他通过内核的过程来完成,同时也避免了各种不必要的复制。对共享内存的操作涉及到多个进程间的同步问题,数据应该先写,在读,通常采用用信号量来协调这个过程。

2.进程与线程的区别?

线程是进程中的一个逻辑执行单元,也是进程中可调度的实体;一个进程中可以包含多个线程,但是一个线程只能隶属于一个进程。

与进程的区别:

  • CPU调度方面:CPU调度是以线程为基本单位进行的;
  • 拥有资源方面:进程是拥有资源的基本单位,线程不拥有系统的资源,但是可以使用隶属于进程的资源;
  • 并发方面:线程和进程都支持并发;
  • 系统开销方面:创建进程的时候需要为进程分配资源,销毁进程时需要回收资源,所以使用进程的开销要大于使用线程的开销。

3、进程控制块?

操作系统通过进程控制块来对进程控制和管理的。PCB通常在系统内存中占用一块连续的分区,它存放着操作系统用于描述进程情况以及控制进程运行情况所需的全部信息。

4、为什么要CPU调度?

CPU调度的目标是在任何时候都有某些进程在运行,是CPU使用率最大化。 同一时刻只有一个进程占有CPU资源,但一个进程在等待IO时等等一些阻塞进程的动作时,CPU就回空闲出来,这时候,我们应该让这个阻塞的进程让出CPU资源,让其他已经处于就绪状态的进程执行。这样就可以使CPU使用率最大化。

5、为什么要死锁?

在多道程序环境下,多个进程可能竞争一定数量的资源,某个进程申请资源,如果这时这个资源不可用,那么这个进程就进入等待状态。如果所申请的资源被其他等待进程占有,那么该等待进程可能再也无法改变其状态,一直等待下去,这种情况称之为死锁。

6、cache的作用?

cache是处于 CPU寄存器和内存之间的一层缓存,用来加快CPU的取指速率,使用时: CPU需要数据时,首先会查找cache中有没有需要的数据,如果有,则取走,如果没有,则查询内存,并将数据更新到缓存中,以供下次取指。

7、DNS (Domain name system)域名系统,简单描述其工作原理。

DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名指定的类别。它是基于UDP的服务,端口是53,该应用一般不直接为用户使用,而是为其他应用服务如 HTTP、SMTP等在其中需要完成主机名到IP地址转换。

END

作者:小招 光明顶小招 来源:https://mp.weixin.qq.com/s/a0bun4sXUVYhRgG1SYuOBA 本文版权归原作者所有。转载文章仅为传播更多信息之目的,如有侵权请与我们联系,我们将及时处理。

原文发布于微信公众号 - java工会(javagonghui)

原文发表时间:2018-06-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏移动安全

移动安全-api使用方式介绍

windows 环境请访问 Composer官网 下载安装包安装。unix 环境在命令行中执行以下命令安装。

6997
来自专栏互扯程序

玩转linux 这些命令就够了

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

1432
来自专栏IT技术精选文摘

Nginx核心模块常用指令

配置示例 user www www; worker_processes 2; error_log /var/log/nginx-error.log info; ...

2135
来自专栏散尽浮华

Git忽略规则.gitignore梳理

对于经常使用Git的朋友来说,.gitignore配置一定不会陌生。废话不说多了,接下来就来说说这个.gitignore的使用。 首先要强调一点,这个文件的完整...

1847
来自专栏微信公众号:Java团长

Spring 核心框架体系结构

  很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置...

641
来自专栏人工智能LeadAI

深入理解并发/并行,阻塞/非阻塞,同步/异步

1、阻塞,非阻塞 首先,阻塞这个词来自操作系统的线程/进程的状态模型中,如下图: ? 进程状态 一个线程/进程经历的5个状态,创建,就绪,运行,阻塞,终止。各个...

3894
来自专栏信安之路

代码安全之文件包含

PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码...

840
来自专栏代码世界

Linux常用命令大全

1769
来自专栏葡萄城控件技术团队

使用 PowerShell 自动化 CloudServices 发布

在软件的开发过程中,自动化的编译和部署能够带来很多的优势。如果可以通过一个脚本实现软件的自动化部署,那么就可以节省大量的时间去做其它事情。 下面介绍如何将云应用...

2127
来自专栏python学习指南

python爬虫(二)_HTTP的请求和响应

HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(Hyp...

39410

扫码关注云+社区