linux技术栈守护进程学习,linux守护进程工具

kodinid 9 0

大家好,今天小编关注到一个比较意思的话题,就是关于linux技术栈守护进程学习问题,于是小编就整理了4个相关介绍Linux技术栈守护进程学习的解答,让我们一起看看吧。

  1. linux网络栈是什么?
  2. 前端开发需要学什么?尚硅谷的课程全面吗?
  3. 一个java进程发生了OOM后,该进程或服务一定会被杀死吗?
  4. Linux系统是如何创建进程的?听说这一过程是用C语言clone函数实现的?

linux网络栈是什么

linux网络栈就是指linux网络协议栈。是linux操作系统网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和上下两个其他协议模块通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。用户应用程序只是处理最上层的协议。

在实际中,协议栈通常分为三个主要部分:媒体,传输和应用。一个特定的操作系统或平台往往有两个定义良好的软件接口:一个在媒体层与传输层之间,另一个在传输层和应用程序之间。

linux技术栈守护进程学习,linux守护进程工具-第1张图片-安济编程网
图片来源网络,侵删)

媒体到传输接口定义了传输协议的软件怎样使用特定的媒体和硬件(“驱动程序”)。例如,此接口定义的TCP/IP传输软件怎么与以太网硬件对话。

应用到传输接口定义了应用程序如何利用传输层。例如,此接口定义一个网页浏览器程序怎样和TCP/IP传输软件对话。

前端开发需要学什么?尚硅谷课程全面吗?

前端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。

linux技术栈守护进程学习,linux守护进程工具-第2张图片-安济编程网
(图片来源网络,侵删)

随着市场的不断发展和对互联网产品界面的要求不断提高,前端培训这门课程也随着迅速的发展,那么究竟是那家的课程好,这就要看课程的更新情况以及对于需求的适应程度了。

那么下边给大家简单的介绍一下前端培训课程体系,让想要学习的小伙伴有个基本了解

第一阶段:HTML + CSS核心

linux技术栈守护进程学习,linux守护进程工具-第3张图片-安济编程网
(图片来源网络,侵删)

第二阶段:javaScript核心 + 高级

一个Java进程发生了OOM后,该进程或服务一定会被杀死吗?

不一定。

一个线程 OOM 后,其他线程是可以正常运行的,但是内存泄露之后可能会导致整个程序内存溢出,最终程序不可用。

那么我们下面说一下,一个线程 OOM 了,为什么其他线程不受影响呢?

要回答这个问题,我们先来回想一下 j***a 的内存结构。如下图所示:

我们知道,多线程的时候,每个线程都拥有一个栈和一个程序计数器。栈和程序计数器用来保存线程的历史和线程的执行状态,是线程私有的***。堆是线程共享的,所以理论上一个线程 OOM 了,其他线程应该受影响才对啊,实际上却并不是,这是什么原因呢?

有兴趣的可以按照我下面的这段代码自己去跑一下,测试一下这个内存溢出。

然后结合 JvisualVM 工具,你会看到,在程序内存溢出之后,溢出的内存的线程所占的内存会被快速释放。如下图所示

Linux系统是如何创建进程的?听说这一过程是用C语言clone函数实现的?

这跟execvp函数的实现方式有关:

int execvp(const char *file ,char * const argv []);

execvp()会从PATH 环境变量所指的目录查找符合参数file的文件名,找到后便执行该文件,然后将第二个参数argv传给该欲执行的文件。[_a***_]执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。

之所以显示“fail to exec”,是因为在PATH环境变量所指的目录中没有名为“hello”的程序。建议进行如下操作:

1、运行“echo $PATH”,查看一下PATH环境变量指向那些目录

2、编写一个输出“hello world”的程序,并命名为hello,即执行命令

gcc -o hello

hello.c

3、把名为”hello“的程序拷贝到PATH变量所指的其中一个目录中

到此,以上就是小编对于linux技术栈守护进程学习的问题就介绍到这了,希望介绍关于linux技术栈守护进程学习的4点解答对大家有用。

标签: 线程 一个 协议