神奇的Linux 之小知识点总结

最近在认真学习Linux,Linux 的强大又让我打开了一个新的世界,这篇文章主要总结我在学习Linux 时一些小的知识点,希望能帮助到更多还在为编程奋战的人


1.system 和exec 的区别?

(1)exec 是Linux 中唯一一个启动新进程的函数,exec函数会直接在你的进程中执行新的程序,新的程序会覆盖你的程序,除非调用错误,否则永远都走不到exec后面的代码

相当于调用新的进程

(2)system 内部封装了fork()  和 exec  ,是用shell 来调用程序,在单独的进程中执行命令,执行完成之后便会回到你的代码中,相当于fork()了一个新的子进程



2.什么是阻塞,什么是非阻塞?

用形象的话来说:

阻塞:   干完再回来,干不完不许回来

非阻塞:你先干着,我看看有没有其他事,干完告诉我一声就行

比如说:

send()函数:调用send 函数发送一定的字节,在系统内部,send 只是把数据拷贝到TCP/IP协议栈的输出缓冲区,执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的缓冲区来保存你的代码时,就会有阻塞和非阻塞之分,阻塞:send函数将不返回直到系统的缓冲区有足够的空间把你要发送的数据copy过去才返回,非阻塞:

会立即返回


3.同步和异步的区别?

同步: 在发出一个功能调用时,在没有得到结果之前,该调用就不返回

异步:当一个异步调用发出后,调用者不能立即得到结果,实际处理这个调用的部件完成后,通过三种:状态,通知,和回调来通知调用者

            (状态:调用者需要每隔一段时间检查一次,效率比较低,通知的效率比较高,回调与通知大致相同)


4.阻塞调用和非阻塞调用

阻塞调用:调用结果返回之前,当前线程会被挂起,函数只有得到结果之后才返回

非阻塞调用:不会立即得到结果之前,该函数不会阻塞当前线程,而是立即返回


5.阻塞调用与同步调用的区别

阻塞调用:当前线程就会被挂起,直到有数据为止

同步调用:很多线程都是激活的,只是没有返回值而已,当前线程还会处理其他消息


6.简述for()函数的功能

(1)原型

#include

       pid_t fork(void);

(2)功能:创建子进程

(3)函数特点:

执行成功:执行一次,返回两次

父进程:返回子进程的ID号

子进程:返回0

执行失败:返回-1

(4)执行过程

fork()函数会复制当前进程,在内核进程表中创建一个新的进程表项,新的进程表项中有许多与原进程相同(堆指针,栈指针,标志寄存器的值),但是也有不同:把该进程的父进程ID号设置为原来进程的ID号,原进程设置的信号处理函数不再对新进程起作用。

  子进程的代码,数据(堆数据,栈数据,静态数据)都与父进程相同,数据的复制采用写时拷贝,即只有在任一进程对数据进行了写操作时,复制才会发生,但是使用时应该避免没必要的内存分配和数据复制

  创建子进程后,父进程中打开的文件描述符默认在子进程中也是打开的,且文件描述符的引用计数+1,父进程的用户根目录,当前的工作目录等变量的引用计数均会+1.


7.关于Linux下文件传输工具的简单了解

(1)nfs  :NETWORK  FILE  SYSTEM

网络文件系统:通过网络使不同的机器或者操作系统之间共享文件部分,设置 Linux系统之间的文件共享

NFS 只是一种文件系统,本身没有传输的功能,是基于RPC 协议实现的,才能达到两个linux 系统之间的文件目录共享

NFS  为C/S架构

(2)http:可以实现文件的上传和下载

(3)ftp:控制文件的双向传输

(4)scp:   secure  copy 用来进行远程文件拷贝的,数据传输使用ssh(ssh 是建立在应用层基础上的安全协议, ssh 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议)

(5)samba:  在Linux 和UNIX 系统上实现SMB(server message block  信息服务块)协议,是一种在局域网上共享文件和打印机的一种通信协议,它为局域网的不同计算机之间提供文件以及打印机资源的共享服务,SMB 协议是客户端/服务器型协议,客户端通过该协议可以访问服务器上的文件系统,打印机和其他资源


8. Linux 下Ubuntu  和 centos 的安装软件的命令

centos  下安装,卸载,更新软件的命令

rpm  安装:

rpm -ivh   xxx.rpm  安装

rpm -Uvh  xxx.rpm  更新

rpm -qa|grep xxx.rpm     查看是否安装

rpm -ql|grep xxx.rpm      查看安装到哪里了

rpm  -e  xxx.rpm           卸载


yum 安装

yum -y install   XXX   安装

yum -y remove  XXX  删除

yum -y  erase   XXX  删除

yum -y update   XXX  更新

ubuntu 下的安装命令

apt-get

sudo apt-get install   安装

sudo apt-get remove  卸载

sudo apt-get update/upgrade  更新


dpkg 

dpkg -i  xxx.deb  安装

dpkg -r  xxx.deb  卸载

dpkg -l|grep        查找



9.man   page   一共分为九类

需要记住的有:第一类:linux 系统命令

                             第二类:系统调用

                             第三类:c 语言运行时库

                              第五类:配置文件

                               第八类:管理命令

10,内存有32位和64位代表的什么意思?

cpu  运算的数据都是由内存提供的,内存与cpu 的通信速度靠的是外部频率(外频:cpu 与外部组件进行数据传输/运算     倍频:cpu 内部用来加速工作性能的一个倍数,两者相乘为cpu 的频率)

每次工作可以传输的数据量的大小是由地址总线决定的,

北桥:(系统总线)(是内存传输的主要信道,传输速度快)

所支持的频率为前端总线速度(FSB),每次传输的位数为总线宽度

总线频宽 = FSB* 总线的宽度

常见的总线宽度有32位和64位

南桥(输入/输出总线I/O)(联系硬盘,usb, 网卡)

cpu 每次能处理的数据量称为字组大小,字组大小依据cpu 的设计主要有32位和64位,现在所称的计算机是32位或者64位主要依据是cpu 能解析的字组大小而来






你可能感兴趣的:(每日新知识)