zoukankan      html  css  js  c++  java
  • 操作系统 Linux系统

    Linux操作系统

    预备知识(Operating System):

    1、GNU项目,GNU项目是一个自由软件项目,旨在建立一个完全自由开放通用的UNIX软件平台。

    2、操作系统:管理计算机硬件和软件资源的程序,而且操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面

    3、操作系统基础知识:一、四个特性:并发:同一段时间内多个程序执行(注意区别并行和并发,前者是同一时刻的多个事件,后者是同一时间段内的多个事件);二、共享:系统中的资源可以被内存中多个并发执行的进线程共同使用;三、虚拟:通过时分复用(如分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个;四、异步:系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推进。

    4、进程和线层:进层状态和多线层的状态(就绪状态,执行状态,阻塞状态);队列(就绪队列和阻塞队列);

    5、进程和线层:

      一、进程就是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源进程控制块用来记录进程的外部特征,描述进程的执行变化过程系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志

      二、进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位

      三线程也叫轻量级进程,它是一个基本的CPU执行单元,也是序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能。多线层共用资源,包括代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储),但是每个线程拥有自己的栈段, 寄存器的内容,栈段又叫运行时段,用来存放所有局部变量和临时变量

      四、线程则是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

    6、同步和异步:同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作

    注:1、父和子进程使用进程间通信机制(https://www.cnblogs.com/xdyixia/p/9257668.html,同一进程的线程通过读取和写入数据到进程变量来通信。线程之间的通信更方便。
      2、进程同步问题:生产者-消费者问题;哲学家进餐问题;读者-写者问题;同步的解决方案:管程,信号量。

    7、IO模型:

      同步IO、synchronous IO做”IO operation”的时候会将process阻塞,所以blocking IO,non-blocking IO,IO multiplexing都属于synchronous IO。非阻塞IOIO在执行recvfrom这个system call的时候,如果kernel的数据没有准备好,这时候不会block进程。但是,当kernel中数据准备好的时候,recvfrom会将数据从kernel拷贝到用户内存中,这个时候process是被block了。

      异步IO、用户进程发起read操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它受到一个asynchronous read之后,首先它会立刻返回,所以不对用户进程产生任何block。kernel会等待数据准备完成,然后将数据拷贝到用户内存,当这一切都完成之后,kernel会给用户进程发送一个signal

      阻塞IO、在linux中,默认情况下所有的socket都是blocking,blocking IO的特点就是在IO执行的两个阶段都被block。recvfrom这个系统调用,kernel(实时操作系统)准备数据。数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),kernel要等待完整的数据。用户进程这边,整个进程会被阻塞。当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户进程才解除block的状态,重新运行起来。

      非阻塞IO:非阻塞将大的整片时间的阻塞分成N多的小的阻塞, 所以进程不断地有机会 ‘被’ CPU光顾”。即每次recvform系统调用(阻塞IO)之间,cpu的权限还在进程手中,这段时间是可以做其他事情的

      IO多路复用:select/epoll的好处就在于单个process就可以同时处理多个网络连接的IO,基本原理就是select/epoll这个function会不断的轮询所负责的所有socket(kernel会“监视”所有select负责的socket,所以优势在于IO多路复用可以同时处理多个connection,当某个socket有数据准备好了,就通知用户进程调用read,将数据从kernel拷贝到用户进程

    8、虚拟地址:进程创建加载的时候,自身感知获得了一个连续的内存地址空间,然而实际上内核之分配了一个逻辑上的虚拟内存空间,并且对虚拟内存和磁盘通过mmap做映射关系,对虚拟内存和物理内存的映射关系;等到程序真正运行的时候,需要某些数据,并不在虚拟内存中,才会触发缺页异常,进行数据拷贝。

    2、Linux系统的优点:

    Linux操作系统:

    一、Linux目录系统:

     

    1、/和~:

      /是根目录,Linux系统只有一个/目录;~是家目录,每个用户都有一个家目录。如果是root用户(根用户、超级用户),~表示的是:/root;如果是普通用户a,~表示的是:/home/a

    2、文件基本属性: 

      一、在Linux中第一个字符代表这个文件是目录、文件或链接文件等。

    • 当为[ d ]则是目录
    • 当为[ - ]则是文件;
    • 若是[ l ]则表示为链接文档(link file);
    • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

      二、文件权限,前10个字符表示文件类型和权限,读r(4),写w(2),执行x(1),没有权限-。(注:可用三位二进制数表示权限

    3、绝对路径和相对路径:

      绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录;相对路径:不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man

     

    二、Linux操作系统常用命令操作:

    1、文件操作:ls/file、cp、mv、ln、rm、tar、chmod/chowm/charp/touch

    2、目录操作:mkdir、rmdir、cd、pwd

    3、用户切换:su、sudo、login;passwd;exit/reboot、init0/shutdown、halt/poweroff

    4、获取帮助:[命令]+:-h、-?、--help;man、info+[命令]

     

    三、Linux操作系统,shell编程:

    1、变量、流、管道;

    变量是一种临时记录字符串的方式,export(变量的赋值);$(提取变量的值)export name=$(pwd)/tar.tar

    是打开文件的一种形式,cat、echo、sort、uniq、head、tail、wc;>(文件内容删除)、>>(在文件的尾部增加输出的内容)格式:命令>(>>) 文件,如 cat greptest >liutest

    管道(|是一种进程的通信方式,将前一个命令的输出发送给后一个命令。grep "grep" greptest | tail -n 3

    2、进程操作:

    进程查看,ps 

    进程控制,kill;语法:kill { [{ -信号 | -s 信号}]  进程号 | -l [信号]  } -s 信号 或者 -信号 :发送信号到指定进程;-l 信号:将信号数值翻译成信号的名称

    进程切换,bg和fg

    3、网络操作

    网络配置:ifconfig

    ping:ping [参数] 目标地址

    ARP:将IP数据报转换为以太网的帧,并发送给临近的网络接口

    FTP:FTP服务器主要提供远程文件下载服务

    4、系统变量(表示特殊含义的系统变量):$+n/#/0/?/*/@/$/!

    5、shell编程设计:

      变量、条件测试>>文件状态测试、逻辑操作(-a、-o、!)、字符串测试(-z、n;=、!=、<、>)、数值测试(-eq、-ne;(-lt、-le)、(-gt、-ge))

      流程控制语句:if;case(字符串str所匹配的情况,执行相应的程序分支);while、until;for

      常用命令:

        read;

        select;

        大括号{  }(将一个非整体的字符串强制解释成一个整体如:[$1 = '-n'] && { echo hello" ls });

        "(单引号),取消所有的转义符号、通配符和分隔符、""(双引号),取消通配符和分隔符的转义,但是对于变量依然进行转义。'12 $a'"12 $a"中的a=12两者表达的意思不同!

        funname(){...}函数

    四、Linux操作系统 vi/vim编辑器:

    1、三种操作模式:命令模式、底行模式、文本输入模式

      默认模式是命令模式,在命令模式下模式切换为底行模式;按i、a、o等,命令模式切换为文本输入模式;两种模式按ESC可以切换为命令模式。

      底行模式用于处理带有参数的命令

    2、可视模式:命令模式下按v,模式切换为可视模式,按v退出可视模式。

    3、取代模式(Replace mode-按键r和R):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止。

    4、vi键盘图

    五、Linux操作系统 linux yum 命令:

    1、yum 语法:yum [options] [command] [package ...]

    2、yum常用命令:

      1.列出所有可更新的软件清单命令:yum check-update

      2.更新所有软件命令:yum update

      3.仅安装指定的软件命令:yum install <package_name>

      4.仅更新指定的软件命令:yum update <package_name>

      5.列出所有可安裝的软件清单命令:yum list

      6.删除软件包命令:yum remove <package_name>

      7.查找软件包 命令:yum search <keyword>

      8.清除缓存命令:

        yum clean packages: 清除缓存目录下的软件包

        yum clean headers: 清除缓存目录下的 headers

        yum clean oldheaders: 清除缓存目录下旧的 headers

        yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers

  • 相关阅读:
    121.买卖股票 求最大收益1 Best Time to Buy and Sell Stock
    409.求最长回文串的长度 LongestPalindrome
    202.快乐数 Happy Number
    459.(KMP)求字符串是否由模式重复构成 Repeated Substring Pattern
    326.是否为3的平方根 IsPowerOfThree
    231.是否为2的平方根 IsPowerOfTwo
    461.求两个数字转成二进制后的“汉明距离” Hamming Distance
    206.反转单链表 Reverse Linked List
    448. 数组中缺少的元素 Find All Numbers Disappeared in an Array
    常见表单元素处理
  • 原文地址:https://www.cnblogs.com/yinminbo/p/11723783.html
Copyright © 2011-2022 走看看