linux入门知识

1.Telnet是什么?

  Telnet是teletype network的缩写,现在已成为一个专有名词,表示远程登录协议和方式,分为Telnet客户端和Telnet服务器程序. Telnet可以让用户在本地Telnet客户端上远端登录到远程Telnet服务器上。

   专业的说,Telnet是Internet上远程登录的一种程序;它可以让您的电脑通过网络登录到网络另一端的电脑上,甚至还可以存取那台电脑上的文件。当然,不是每一台电脑您都可以登录,前提是这台电脑有对外开放或者是您必须拥有使用者帐号及密码;最重要的是您与所想连接的电脑都得连上Internet。

Telnet是什么协议?

   Telnet服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用Telnet协议来工作。那么,什么是Telnet协议?它都具备哪些特点呢?

   Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:

   1)Telnet定义一个网络虚拟终端为远程系统提供一个标准接口。客户机程序不必详细了解远程系统,他们只需构造使用标准接口的程序;

   2)Telnet包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项; 

   3)Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出

2.iostat工具简介

iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析

3.tcpdump

是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

4.Linux ps

(英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

5.isof

lsof 命令常用于查找进程打开了哪些文件以及与打开文件相关联的内容,这篇文章将介绍 lsof 常用的命令参数,下面通过实例进行说明。

一、基本概念
命令 lsof ( list opened files )负责列出系统中已经打开的文件,包括普通文件,目录,块特殊文件,字符特殊文件,正在执行的文本引用,库,流或网络文件(例如:网络套接字,NFS文件或UNIX域套接字)。

6.netstat

该 netstat 的命令用来显示网络状态

传统上,它用于问题确定而不是性能测量。但是,netstat 命令可用于确定网络上的流量,以确定性能问题是否是由于网络拥塞引起的。

在 netstat 的关于所配置的网络接口,诸如以下的流量命令显示信息:

与所有sockets关联的任何协议控制块的地址以及所有sockets的状态
通信子系统中接收,传输和丢弃的数据包数
每个接口的累积统计信息
路线及其状态

7.free

一. 作用

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

8.用户态和内核态的基本概念、区别

在计算机科学中,操作系统是管理计算机硬件与软件资源的核心软件,它负责分配和调度计算机资源,提供各种服务以支持应用程序的运行。操作系统中的用户态和内核态是两个重要的概念,它们定义了应用程序和操作系统之间的交互方式。这篇文章我们将详细解释这两个概念,以及它们在操作系统中的作用和意义。

用户态和内核态的定位
用户态和内核态的区分是在操作系统层面进行的。这两种状态是操作系统为了安全和管理而设计的。

在操作系统中,内核态(Kernel Mode)是运行操作系统程序、操作硬件的状态,具有最高权限;而用户态(User Mode)是运行用户程序的状态,其权限受到限制。当用户程序需要操作系统帮助完成某些它没有权力和能力完成的工作时,就会通过系统调用陷入到内核态,由操作系统来完成相应的工作。

用户态和内核态的概念
用户态
用户态也被称为用户模式,是指应用程序的运行状态。在这种模式下,应用程序拥有有限的系统资源访问权限,只能在操作系统划定的特定空间内运行。用户态下运行的程序不能直接访问硬件设备或执行特权指令,所有对硬件的访问都必须通过操作系统进行。

在用户态下,应用程序通过系统调用来请求操作系统提供的服务。例如,文件操作、网络通信等都需要通过系统调用来实现。当应用程序发出系统调用时,会触发上下文切换,将CPU的控制权交给操作系统内核,进入内核态。

内核态
内核态也被称为内核模式或特权模式,是操作系统内核的运行状态。处于内核态的CPU可以执行所有的指令,访问所有的内存地址,拥有最高的权限。内核态下运行的程序可以访问系统的所有资源,包括CPU、内存、I/O等。

在内核态下,操作系统可以响应所有的中断请求,处理硬件事件和系统调用。当应用程序发出系统调用时,CPU会切换到内核态,执行相应的操作,然后返回用户态。此外,当发生严重错误或异常时,也会触发内核态的切换。

为什么要区分用户态和内核态
操作系统区分用户态和内核态的原因有以下几点:

安全性:将操作系统和用户程序的运行环境分开有助于防止用户程序对系统造成不可修复的破坏。用户程序在用户态下运行,受到严格的限制,不能直接操作关键系统资源。
稳定性:如果一个用户程序崩溃或出现错误,它不会影响整个系统的稳定性。内核态下运行的操作系统可以继续正常工作,而不受用户程序的干扰。
性能:内核态具有更高的权限,可以执行一些需要较高特权级别的操作,如直接访问硬件。将这些操作限制在内核态有助于提高系统的性能,因为不需要为每个用户程序都提供相同的权限。
综上所述,通过区分用户态和内核态,操作系统可以实现更好的安全性、稳定性和性能。

用户态与内核态的区别与联系
用户态和内核态的主要区别在于权限和资源访问上。用户态下运行的程序权限受限,只能访问有限的资源;而内核态下运行的程序拥有最高权限,可以访问所有资源。此外,用户态和内核态的切换需要通过系统调用或异常处理来完成。

然而,用户态和内核态并不是完全独立的运行空间。应用程序在运行过程中可能需要操作系统的支持,这时就需要通过系统调用进入内核态,由操作系统提供服务。而操作系统内核也需要根据需要切换回用户态,将控制权交还给应用程序。这种切换过程涉及到处理器状态的保存和恢复、上下文的切换等操作,需要操作系统的底层支持。

内核态和用户态的区别主要体现在以下几个方面:

权限:内核态是操作系统拥有最高权限的运行状态,可以访问系统的所有资源,包括 CPU、内存、I/O 等。而用户态只能访问受限的资源,应用程序在用户态下运行,不能直接访问操作系统内核数据结构和程序。
系统调用:在用户态下,应用程序需要通过系统调用来请求操作系统提供服务,而在内核态下,操作系统可以直接访问系统资源,不需要通过系统调用。
CPU 指令:在内核态下,CPU 可以执行所有的指令,而在用户态下,CPU 只能执行受限的指令。
中断处理:在内核态下,操作系统可以响应所有的中断请求,而在用户态下,只能响应部分中断请求。
内存访问:在内核态下,操作系统可以访问所有的内存地址,而在用户态下,只能访问受限的内存地址。
运行环境:在内核态下,操作系统运行在内核空间,而在用户态下,应用程序运行在用户空间。
总的来说,内核态和用户态的主要区别在于权限、系统调用、CPU指令、中断处理、内存访问和运行环境等方面。

用户态和内核态如何相互切换
内核态和用户态的切换主要通过中断和系统调用来实现。当用户态的进程需要执行内核态的代码时,通常会通过系统调用陷入到内核态。这个过程涉及到保存用户态的上下文(如堆栈信息)到内核态,然后加载新的内核态的上下文开始执行。当内核态的代码执行完毕后,它会将控制权返回给用户态,并恢复原来的上下文,完成从用户态到内核态的切换。同样,当一个中断发生时,处理器会自动切换到内核态,执行相应的中断处理程序,处理完毕后再返回到用户态。整个切换过程涉及到处理器状态的保存和恢复,以及上下文的切换,需要操作系统的底层支持。

用户态切换到内核态的唯一途径——>中断/异常/陷入
内核态切换到用户态的途径——>设置程序状态字

9.动态库和静态库的区别

  1. 载入顺序不同
    静态库的代码在编译时就拷贝到应用程序中,因此当多个应用程序同时引用一个静态库函数时,内存中将会调用函数的多个副本。其优点是节省编译时间。
    动态库是在程序开始运行后且调用库函数时才被载入,被调函数在内存中只有一个副本,并且动态库可以在程序运行期间释放动态库所占用的内存。

  2. 大小与共享的差异
    静态链接库就是在程序编译的时候就被加载进来,这样的可执行文件会比较大一些,还不能共享 ;动态链接库是在程序执行的时候加载,可共享 。

  3. 库函数调用的差异
    静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。
    动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在linux的管理下,才在应用程序与相应的.so之间建立链接关系。当要执行所调用动态库中的函数时,根据链接产生的重定位信息,才转去执行动态库中相应的函数代码。

10.进程的信号量和线程的信号量

信号量分为有名与无名
信号量在进程是以有名信号量进行通信的,在线程是以无名信号进行通信的,因为线程linux还没有实现进程间的通信,所以在sem_init的第二个参数要为0,而且在多线程间的同步是可以通过有名信号量也可通过无名信号,但是一般情况线程的同步是无名信号量,无名信号量使用简单,而且sem_t存储在进程空间中,有名信号量必须LINUX内核管理,由内核结构struct ipc_ids 存储,是随内核持续的,系统关闭,信号量则删除,当然也可以显示删除,通过系统调用删除,

1.socket

所谓套接字 (Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。 从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口 。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值