zoukankan      html  css  js  c++  java
  • Linux基础2

    Linux基本概念

    Linux的发展史

    Linux发行版

    发行版一般提提供两种用户界面

    图形化用户界面(GNOME,KED等)

    命令行界面CLI(bash)

    Linux的优势

    与Unix操作系统兼容

    广泛的硬件运行条件

    多硬件平台支撑和可移植性

    支持多种文件系统

    良好的设备独立性

    强大的网络功能

    完美支持多用户任务

    完善的虚存技术

    Linux用户和权限

    用户和组的基本概念

    Linux中的文件、进程都是和用户绑定在一起的

    用户的身份决定了能使用和操作的资源(文件,进程)

    每个用户名有一个对应的uid

    每个用户都隶属于一个或多个组

    用户分为三种类型

    超级管理员root用户(uid为0)

    系统用户(uid为1-499)

    普通用户(uid为500或以上)

    权限是操作系统用来限制用户,组,进程对操作系统资源(文件,设备等)的访问的机制

    权限分为:读,写,执行,Linux中表示为r,w,x

    Linux中每个文件或目录都拥有一个所属用户和所属组,并且设置对应权限

    每个进程在运行的时候均以一个用户的身份运行,同时继承该用户的权限

    Linux使用UGO模型来进行权限管理

    U代表用户,G代表组,O代表其他用户和组

    权限

    文件

    目录

    r

    可读取文件内容

    可以列出目录的内容

    w

    可修改文件的内容

    可创建,删除目录中的文件

    x

    可以作为命令执行

    可访问目录内容

    第一个代表这个文件的类型

    d

    代表目录

    -

    代表文件

    l

    表示为链接文件 link file

    b

    表示为设备文件中可供存储的接口设备

    c

    表示为设备文件中的串行端口设备,例如键盘、鼠标

    磁盘基本的概念

    Linux系统中所有设备都被抽象成文件,存储在/dev目录下

    分区:即将一个磁盘在逻辑上分为几个区,每个区当成独立的磁盘使用,以达到方便数据和文件管理的目的。

    目前主流的分区技术有:MBR和GPT

    MBR:Master Boot Record

    GPT: GUID Partition Table

    MBR是一种建立在BIOS技术基础上的传统分区机制

    其主要特点为:

    支持32位和64位系统

    支持分区数量有限(最多4个主分区)

    寻址空间为32位,最大支持大小为2TB的硬盘

    主分区

    MBR最多支持4个主分区

    扩展分区

    扩展分区可以建立多个逻辑分区,但一个扩展分区占用一个主分区的位置

    逻辑分区

    Linux系统最多支持63个IDE和15个SCSI逻辑分区

    GPT

    GPT是一种建立在UEFI技术基础上的新分区机制,其主要目的是解决MBR机制的缺陷

    主要特点:

    支持超过2TB大小的硬盘

    必须使用64位系统

    向后兼容MBR

    目前类Unix系统都支持GPT技术,Windows系统从Windows7之后支持

    Linux系统启动流程

    BIOS:硬件启动

    基本输入输出系统,一般保存在主板的ROM中。主要完成两个部分的功能:

    通电自检

    寻找启动设备

    MBR:Master Boot Record

    Linux启动过程中执行MBR中的前446个字节

    GRUB:操作系统引导程序

    Linux发行版中普遍使用的引导程序

    加载内核

    init:第一个进程

    调用/etc/rc.d/rc.sysinit文件对系统进行初始化

    挂载文件系统

    根据运行级别启动相关服务和程序

    Linux的运行级别

    0:关机

    1:单用户模式

    2:不带网络模式的多用户

    3:普通多用户模式

    4:未使用

    5:图形化界面

    6:重新启动

    runlevel:相关应用程序

    Linux文件共享方法

    通过副本共享:复制需要共享的文件并发送到组内每个成员

    通过同一用户名登陆共享:共用一个账号登陆系统

    为共享文件设立适当的访问权限:把所有共享的文件放到一个成员账号下,设置成员具有读写和执行的权限

    为团队成员建立一个用户组:建立一个新用户组只包括项目组的所有成员,每个用户用自己的账号登陆,为自己的文件设立适当的访问权限,使得它们可以被组中的其他成员访问。

    通过文件链接共享,Linux两类链接:硬链接(hard link)和软(符号)链接(Soft/symbolic link)

    硬链接是一个指向文件索引节点的指针。ln并不会影响文件的内容,它只是建立另一个文件名称而已。

    硬链接的特点:

    不可跨越文件系统

    只有超级用户才可以建立目录硬链接

    不占用空间(极少)

    系统为共享用户创建一个link类型的新文件,将这个新文件的登记在该用户共享目录向下,这个link型文件包含链接文件的路径名。该类文件在用ls命令长列表显示时,文件类型为l

    当用户要访问共享文件且要读link型新文件时,操作系统根据link文件类型性质将文件内容作为路径名去访问真正的共享文件。

    符号链接的特点

    可跨越文件系统,甚至跨越网络(NFS)

    如果链接指向的文件从一个目录移动到另一个目录,就无法通过符号链接访问它

    占用少量空间,存inode的信息

    进程的基本概念

    Linux进程可以处于多种状态中的一种

    进程可以从一种状态变为另一种状态,直到执行结束(正常或者非正常终止)并退出系统。

    当进程完成它的工作并正常退出系统,进程就是正常终止

    当进程是因为在异常(错误)条件下退出系统或者在其拥有者或特权用户的干涉下退出系统,它便是非正常终止。

    TASK_RUNING:进程在运行(是系统的当前进程)或者准备运行(等待被安排到系统的一个CPU上)。进程控制块有一个run_list成员,所有处于TASK_RUNNING状态的进程都通过该成员链在一起,称之为可运行队列

    TASK_INTERRUPTIBLE:进程处于某个等待队列中,它能被信号(signal)或中断唤醒。等待资源的请求满足时,也被唤醒。

    TASK_UNINTERRUPTIBLE:进程处于某个等待队列中,不能被信号或中断唤醒,只有等待的资源被满足时才能被唤醒。列入当进程打开一个设备文件时,使用TASK_UNINTERRUPTIBLE

    TASK_ZOMBIE:进程已经停止,但还没有释放集成控制块

    TASK_STOPPED:可能被特定的信号终止,也可能是受其他进程的跟踪调用而暂时将CPU交给跟踪它的进程。

    Shell命令可以是内部或者外部命令

    内部(内置)命令(internal (built-in) command)的代码本身就是shell进程的一部分。LINUX shell中的一些命令如.(点命令)、alias、bg、cd、continue、echo、exec、exit、fg、jobs、pwd、set、shift、test、time、umask、unset和wait

    外部命令(external command)命令代码以文件的心事出现的承诺为;文件内容可以是二进制代码或者shell脚本。通常使用一些外部命令如grep,more,cat,mkdir,rmdir,ls,sort,ftp,telnet,lp和ps。

    LINUX进程通过系统调用fork创建另外一个进程,该操作建立原进程内存的完全拷贝。这两个进程接着fork后的语句执行。

    Linux程序设计基本概念

    文件操作

    LINUX只需少量函数就可以实现对文件和设备的访问和控制,这些函数被称为系统调用。

    系统调用由LINUX系统直接提供,是通向操作系统自身的接口。

    LINUX系统提供5个系统调用:open,write,read,close,iotcl

    LINUX的核心部分是内核,内核由一组设备驱动程序组成,完成系统对硬件的访问和控制。

    为了向用户提供统一的接口,设备驱动程序封装了所有与硬件相关的特性。硬件的特有功能一般通过系统调用iotcl来完成。

    为了给设备和磁盘文件提供更高层的接口,Linux的个发行版一般提供一系列的标准函数库。

    僵尸进程

    子进程终止时,其与父进程之间的联系还会保持,直到父进程也正常终止或父进程调用wait( )方法才告结束。

    因此,进程表中代表进程的表项不会立即删除(虽然子进程已经不再运行),因为它的退出码还需要保存起来,以备父进程中可能的wait()方法使用

    我们就称这样的进程为死(defunt)进程或僵尸(zombie)进程

    信号

    信号是由于某些错误条件而生成的,如内存段冲突,浮点处理器错误或非法指令等;接收到该信号的进程会相应的采取一些行动。

    用术语生成表示一个信号的产生,使用术语捕获表示接收到一个信号

    一个进程在接收到信号后,默认情况是立即终止进程。

    信号可以被产生,捕获,响应或忽略

    信号可以由shell和终端生成,来引起中断;它们还可以作为进程间传递消息和修改行为的一种方式(明确的由一个进程发送给另一个进程)

  • 相关阅读:
    <剑指OFFER18> 18_01_DeleteNodeInList在O(1)时间删除链表结点
    哈夫曼树

    快速排序
    冒泡算法
    Java 缓存机制
    JAVA NIO
    string、stringbuilder、stringbuffer区别
    Java内存泄露的问题调查定位
    使用hibernate 框架搭建的helloworld
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10012015.html
Copyright © 2011-2022 走看看