UNIX基本概念

进程

  • 从用户观点来看:进程是程序的一个执行实例。
  • 从UNIX系统内部来看,是为运行程序提供执行环境的实体,是系统进行资源分配和调度运行的一个单位。

进程有三个特点:

1)进程有一个控制点和自己的独立地址空间。进程的控制点通过程序计数器跟踪着程序的指令序列。进程的地址空间由进程可以引用或访问的存储单元组成。进程在其他地址空间内执行程序的指令序列。

2)进程具有生存期。进程从创建到消亡的过程称为进程的生存期。一个进程的生存期可以分为一组状态,这些状态刻画了进程从创建、活动到消亡的过程。从用户的观点祖略划分,UNIX系统中进程主要有以下状态:

  • 新建
  • 就绪:进程正在等待被执行
  • 运行
  • 阻塞:进程正在等待一个事件,如I/O
  • 僵死:进程已经结束,并等待释放资源。

进程的简单状态转换图:

3)处于运行状态的进程有两种执行状态:用户态和核态。 若进程运行中执行的是用户程序中的指令,则进程处于用户态执行。当进程发出系统调用时,便进入核态执行。进程在核态下执行的是操作系统的指令,这些指令完成用户的请求,如输入输出、存储分配等。

内核

实现软件管理硬件系统任务的软件称为操作系统,在UNIX术语中称为UNIX内核。UNIX内核是一个底层的直接运行于硬件的程序,它控制着硬件,并创建、销毁和控制所有进程。

UNIX体系结构图:

内核直接与硬件交互,向外提供UNIX系统调用接口,如read()、write()等。如shell以及date、ls和who之类的使用程序,通过系统调用请求内核完成各种操作,并在内核与调用程序之间交换数据。其他应用程序则在底层程序和工具的基础上构筑而成。

shell

UNIX内核负责管理和创建进程,用户的输入命令是由shell来执行。shell是UNIX系统中的一个命令解释程序,处于用户和UNIX系统之间,骑着协调用户与系统间的一致性、在用户与系统之间进行交互的作用。

shell和内核 、使用程序和应用之间的关系:

shell种类:

  • sh
  • csh
  • ksh
  • bash

当系统同时存在多个shell时,/etc/password文件中用户注册账户登记项的最后一个字段标明应当使用哪一种sehll。

用户名与用户ID、用户组和组ID

每个用户有一个账号,改账号有一个用户名和一个唯一的用户ID。

用户可以组织成组,一个用户可以是一个或多个组的成员,其中一个组是用的初始组,简称组。如果该用户还属于其他组,则这些组称为该用户的附加组。用户组由系统管理员建立。/etc/group中登记了系统中存在的所有组和组ID,以及组内的用户。

/etc/password记录了系统中所有的注册用户,每个用户有一个登记项,其中包含用户名、用户ID、用户组ID(指明该用户的初始组)等信息

%grep zkj /etc/passwd zkj x: 500: 15: /home/zkj: /bin/bash
同时,在/etc/ group文件包含如下内容
grep zkj /etc/group users x: 15: zkj research: x: 17: Yang, zkj,
Hc, zhang Lib: x: 20: wang zki
那么,用户zk的用户D为500,组D为15。他是三个组的成员,这
三个组是: users、 research和Lib。其中, users是他的初始组,
research和Lib是他的附加组

特权用户

root(超级用户),用户ID为0。特权用户控制着整个系统的权力。

系统调用和库函数

系统调用时对操作系统的一种请求,它请求操作系统为用户程序完成某种工作。如:read()是一种系统调用,它请求操作系统将存贮在磁盘设备上的数据读入缓冲区。

为避免用户随意访问设备造成混乱,用户必须向操作系统请求服务,由操作系统统一管理请求并提供服务。所有操作系统提供了定义好的、有限个数且直接进入内核的这类服务点,称为系统调用,也称程序设计与系统的接口。

系统中无论使用什么技术实现系统调用,它的定义中式用C函数来表示。UNIX让每一个系统调用有一个相同名字的C函数,应用程序使用与标准C库函数相同的方法调用这些函数,这些函数然后用系统要求的技术来启动适当的内核服务。

库函数和系统调用不同,它可以不需要系统的介入来完成工作,并且也不是进入操作系统内核的入口点,尽管它们可以调用一至多个系统调用。如:printf需要调用write系统调用来完成输出,而复制 strcpy()和sin()则完全不需要操作系统的帮助。

应用程序和系统调用、库函数调用

实现者角度,系统调用与库函数的区别:系统调用时UNIX内核提供的服务,而库函数处于内核之外;用户角度,没太大区分,系统调用和库函数均为普通的C函数,两者都服务于应用程序。

UNIX基础概念的更多相关文章

  1. nginx架构与基础概念

    1       Nginx架构 Nginx 高性能,与其架构有关. Nginx架构: nginx运行时,在unix系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker ...

  2. [转帖]从0开始的高并发(一)--- Zookeeper的基础概念

    从0开始的高并发(一)--- Zookeeper的基础概念 https://juejin.im/post/5d0bd358e51d45105e0212db 前言 前面几篇以spring作为主题也是有些 ...

  3. 【miscellaneous】 GStreamer应用开发手册学习笔记之基础概念介绍

    第3章. 基础概念介绍 本章将介绍GStreamer的基本概念. 理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念. 3.1. 元件(Elements) 元件 ...

  4. SDCC 的 MCS-51 汇编基础概念和传参方式

    寄存器 Register 寄存器用于数据的临时存储, 其数据可以表示为 用于处理的数据字节 指向数据的地址 寄存器的结构 8051的寄存器几乎都是8位寄存器, 因为8位MCU处理的主要是8位数据, 如 ...

  5. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  6. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  7. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

  8. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  9. 理解 angular2 基础概念和结构 ----angular2系列(二)

    前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...

随机推荐

  1. Java Thread系列(六)volatile

    Java Thread系列(六)volatile volatile 关键字具备可见性,不具备原子性.主要作用是使变量在多个线程间可见.但不具备原子性(同步性),可以算一个轻量级的 synchroniz ...

  2. o7 文件和函数

    一:文件 1 控制文件内指针的移动 文件内指针移动,只有在t模式下的read(n),n代表的字符的个数 除此之外文件内指针的移动都是以字节为单位的 with open('a.txt',mode ='r ...

  3. ACTIVITI 5.14事件监听器的BUG

    在ACTIVITI 5.14中,测试内部子流程时发现事件定义的事件监听器不能触发. <activiti:executionListener event="start" del ...

  4. [label][JavaScript扩展] JavaSCript扩展

    http://www.idangero.us/sliders/swiper/ ,swipper for mobile terminal.

  5. JSP和servlet之间的传值(总结的很全面)

    转自:http://blog.csdn.net/ssy_shandong/article/details/9328985 1.从一个jsp页面跳转到另一个jsp页面时的参数传递     (1)使用re ...

  6. ARPG游戏打击感相关的技术简单总结

    说好的技术总结,根据近期的工作总结一下体现游戏打击感相关的技术.一般arpg的游戏打击感除了场景的氛围的烘托,策划的数值:连击,奖励伤害数字的连贯积累反馈,硬直加物理击飞ragdoll,更不可忽视的也 ...

  7. IPv4&&IPv6地址结构分析

    IPv4套接字地址结构: 套接字都需要有一个指向套接字地址结构的指针作为参数.每个协议簇都定义它自己的套接字地址结构.这些结构的名字均已sockaddr_开头,并以对应每个协议族的唯一后缀结尾. wi ...

  8. Flask数据库

    一 数据库的设置 Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在表中,表用来给应用的实体建模,表的列数是固定的,行数是可变的.它使用结构化的查询语言.关系型数据库的列定义了 ...

  9. [Erlang33]使用recon从网页查看Erlang运行状态

    0.需求分析 Erlang最好的卖点之一就是提供了一个非常强大的shell来查看Node运行时的各种状态,可以进行各种各样的内部查看,在运行时调试和分析,热更新代码.   但是总有一些在生产环境下要慎 ...

  10. C#中哈希表(HashTable)的用法详解

    描述: 哈希表存放 key.values ,key值可以用于快速调取用,values 对应object类型,也就是说所有类型. 实例: 1.HashTable存放学生的成绩 Hashtable ht1 ...