What's process--什么是进程?

The UNIX standards, specifically IEEE Std 1003.1, 2004 Edition, defines a process as “an address space with one or more threads (线程) executing within that address space, and the required system resources for those threads.”

Linux允许多个用户同时登陆系统,同时运行相同的程序:

As a multiuser system, Linux allows many users to access the system at the same time. Each user can run many programs, or even many instances of the same program, at the same time. The system itself runs other programs to manage system resources and control user access.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Process Structures:

If two users, neil and rick, both run the grep program at the same time to look for different strings in different files :


如果在搜索结束前,运行ps -ef 命令来查看进程,输出的结果中可能会包含下两项:

操作系统为每一个进程分配一个process identifier(PID). PID的值通常会在2--32768之间,1通常分配给init 进程,该进程的作用是维护其他进程。

进程的共享东东:

grep这个软件对应的可执行code,被加载到内存中的只读区域,然后被两个进程共享!

另外,系统的libraries也可以被共享!例如printf函数,它的可执行代码应该只需要被加载到内存中的一个地方,然后其他用到该函数的所有进程共享这块read-only内存!--这种机制跟windows系统中的dll类似,但是更加复杂!

另一个好处是,可执行程序中如果有printf等库函数,这些库函数不被保存在可执行程序中,可以是可执行程序的占用的磁盘控件变小!---- 意思是最后的可执行文件对应的那些二进制代码中 不包括prinf库函数的二进制代码?


进程的独自的东东:

  • 每一个进程都有自己的stack space ,used for local variables in functions and for controlling function call and returns.
  • 每一个进程都有自己的environment space, containing environment variables that may be established solely for this process to use, as you saw with putenv and getenv in Chapter 4.-----???
  • 每一个进程都有自己的 program counter, a record of where it has gotten to in its execution, which is the execution thread. In the next chapter you will see that when you use threads, processes canhave more than one thread of execution.

/proc 文件的作用:On many Linux systems, and some UNIX systems, there is a special set of “files” in a directory called /proc. These are special in that rather than being true files they allow you to “look inside” processes while they are running as if they were files in directories. We took a brief look at the /proc file system back in Chapter 3. -----------???????

虚拟内存的好处:Finally, because Linux, like UNIX, has a virtual memory system that pages(映射) code and data out to an area of the hard disk, many more processes can be managed than would fit into the physical memory.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

现在,一个系统可以同时运行的线程数量取决于内存空间的大小。

--------------------------------------------------------------------

View Processes:

PS命令是基本的进程查看命令:https://www.cnblogs.com/wxgblogs/p/6591980.html

PS命令的一些参数: 

-A :所有的进程均显示出来,与 -e 具有同样的效用;

-f :做一个更为完整的输出。--??

By default, the ps program shows only processes that maintain a connection with a terminal, a console,
a serial line, or a pseudo terminal. Other processes run without needing to communicate with a user on a terminal. These are typically system processes that Linux uses to manage shared resources. You can use ps to see all such processes using the -e option and to get “full” information with -f

PS命令的输出:

TTY 列:shows which terminal the process was started from. tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接到主机的程序

TIME :gives the CPU time used so far--??

CMD: shows the command used to start the process.

用PS命令查看进程的状态:

STAT:进程目前的状态,主要的状态有:

R :Running,on the run queue either executing or about to run.
S :Usually waiting for an event to occur, such as a signal or input to become available.
T :Usually stopped by shell job control (?) or the process is under the control of a debugger.
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态.--??
D:   Uninterruptible Sleep (Waiting). Usually waiting for input or output to complete.
N:  Low priority task, “nice"
s (小写) : Process is a session leader.---------??
+:  Process is in the foreground process group.---------??
l :  Process is multi-threaded.

<:  High priority task

父子进程:

In general, each process is started by another process known as its parent process. A process so started
is known as a child process. When Linux starts, it runs a single program, the prime ancestor and process number 1, init. This is, if you like, the operating system process manager and the grandparent of all processes. Other system processes you’ll meet soon are started by init or by other processes started by init.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Process Scheduling (进程调度):


Beginning Linux Programming 学习--chapter 11 Processes and Signals的更多相关文章

  1. Beginning Linux Programming 学习--chapter 17 Programming KDE using QT

    KDE: KDE,K桌面环境(K Desktop Environment)的缩写.一种著名的运行于 Linux.Unix 以及FreeBSD 等操作系统上的自由图形桌面环境,整个系统采用的都是 Tro ...

  2. Beginning Linux Programming 学习--chapter 1 Getting start--What's linux,GNU,HeaderFiles, Libraries

    "文明的建立的不是机器而是思想" -- 托尔斯泰 Linux truly become a viable operating system, especially in the s ...

  3. Beginning Linux Programming 学习-chapter2-Shell programming-Pipes and Redirection

    "为了从事创造性工作,人类需要孤独,可是在孤独中,广义的人类仍存在于内心."--(德国)奥铿                                             ...

  4. Linux基础学习(11)--Shell编程

    第十一章——Shell编程 一.基础正则表达式 1.正则表达式与通配符(*,?,[ ]): 2.基础正则表达式: 二.字符截取命令 1.cut字段提取命令: 空格分割时,不知道空格有多少个,无法分割行 ...

  5. linux命令学习笔记(11):nl命令

    nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 等等的功能. .命令格式: nl [选项]... [文件]... .命令参数: -b :指定行号 ...

  6. Linux命令学习笔记目录

    Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...

  7. Linux 内核学习的经典书籍及途径

    from:http://www.zhihu.com/question/19606660 知乎 Linux 内核学习的经典书籍及途径?修改 修改 写补充说明 举报   添加评论 分享 • 邀请回答   ...

  8. 关于Linux内核学习的误区以及相关书籍介绍

    http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html 写给Linux内核新手-关于Linux内核学习的误区 先说句正经的:其实 ...

  9. Linux 内核学习经验总结

    Linux 内核学习经验总结 学习内核,每个人都有自己的学习方法,仁者见仁智者见智.以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下. 内核学习,一偏之见:疏漏难 ...

随机推荐

  1. OpenStack Restful API框架介绍

    1  pecan框架介绍 1.1  什么是pecan pecan是一个轻量级的python web框架,最主要的特点是提供了简单的配置即可创建一个wsgi对象并提供了基于对象的路由方式. 主要提供的功 ...

  2. js 中的方法注入(aop)

    js 中的方法注入 java中很多框架支持 apo 的注入, js中也可以类似的进行实现 主要是通过扩展js中方法的老祖 Function 对象来进行实现. Function.prototype.af ...

  3. SpringMVC+Spring+Mybatis简单总结

    SpringMVC+Spring+Mybatis总结 第一部分:分析 web.xml中的配置 SSM框架的整合其实是Spring和SpringMVC的整合以及Spring和Mybatis进行整合. 当 ...

  4. 两个int类型的数据相加,有可能会出现超出int的表示范围。

    两个int类型的数据相加,有可能会出现超出int的表示范围. /* 移位运算符: <<(左移) 规律:一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移 的位数. ...

  5. Spring Boot|监控-Actuator

    Spring Boot 为我们提供了一个生产级特性-Actuator,包含很多实际有用的API,下面我们就一起来看看这些API. 一.Actuator 首先在程序中引入Actuator <!-- ...

  6. linux 命令scp

    scp命令网络传输文件 上传文件 scp 文件名 usename@10.233.23.100:Data/ 上传文件夹到服务器 scp -r 文件夹(不带/)usename@10.233.23.100: ...

  7. csapp网络编程初学笔记

    csapp网络编程初学笔记 客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型,服务器管理某种资源,并且通过操作来为它的客户提供某种服务 客户端-服务器模型中的基本操作是transacti ...

  8. CEF3开发者系列之Cookies管理和共享<转>

    原帖地址:https://www.cnblogs.com/guolixiucai/p/6994559.html 涉及网页登录相关的技术,Cookies肯定是忽略不了的.由于项目的需要,要做一个双核的产 ...

  9. SpringBoot整合Hibernate

    编写配置文件 <!--配置读取properties文件--> <context:property-placeholder location="classpath:jdbc. ...

  10. Redis数据库漏洞防护

    Redis是一个高性能的数据库,Redis Crackit及Redis安全漏洞本质上是由于Redis自身缺乏安全防护机制,同时Redis的使用者又未曾遵循官方的安全规范所导致的. Redis安全漏洞 ...