美团云计算方面面试题

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 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

ulimit: open files: cannot modify limit: Operation not permitted

      在从root用户切换到oracle用户时,碰到了ulimit: open files: cannot modify limit: Operation...

6642
来自专栏JavaEdge

告知服务器意图的 HTTP 方法1 GET:获取资源2 POST:传输实体主体3 PUT:传输文件4 HEAD:获得报文首部5 DELETE:删除文件6 OPTIONS:询问支持的方法一般网站只用G

31910
来自专栏互扯程序

玩转linux 这些命令就够了

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

1922
来自专栏移动安全

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

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

7647
来自专栏代码世界

Linux常用命令大全

2609
来自专栏测试开发架构之路

Tomcat入门

1、JavaWeb概念 Java web,是用java技术来解决相关web互联网领域的技术的总称。web包括:web服务器和web客户端两部分。 java在...

6867
来自专栏散尽浮华

Git忽略规则.gitignore梳理

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

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

使用 PowerShell 自动化 CloudServices 发布

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

2307
来自专栏积累沉淀

Linux常用命令大全

系统信息  arch 显示机器的处理器架构(1)  uname -m 显示机器的处理器架构(2)  uname -r 显示正在使用的内核版本  dmide...

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

Nginx核心模块常用指令

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

2455

扫码关注云+社区

领取腾讯云代金券