当前位置:首页>Linux>OS17.【Linux】进程基础知识(1)

OS17.【Linux】进程基础知识(1)

  • 2026-07-02 10:04:01
OS17.【Linux】进程基础知识(1)

目录

1.浅层定义

程序和进程的区别

2.查看进程的方法

ps ajx

top

查看/proc目录

编辑

PID

3.手动用ps查看自己运行的程序

在/proc手动查看自己运行的程序目录

杀死进程的常用方法

进程目录中的文件

cwd

理解"当前路径"的含义

4.如何管理一个进程

程序计数器PC

深层理解进程的定义

5.Linux下的PCB的简单理解

6.练习


1.浅层定义

浅层定义:进程(process)指的是一个已经加载到内存中的程序(某些情况下,进程也被称为任务(task))

,也可以这样说:正在运行的程序叫做进程

例如Intel开发手册上的task可以认为是进程:

Windows操作系统下可以通过任务管理器来查看进程

可以看到:一个操作系统上是运行着多个进程的 

程序和进程的区别

程序是静态的概念,而进程可以理解为浅层定义中的正在运行的程序

2.查看进程的方法

Linux下可以通过两个命令来查看进程,也可以看一个目录

ps ajx

ps全称是process status,用于查看当前进程的状态

a:显示所有用户的进程; j:列出与作业控制相关的信息; x:显示没有控制终端的进程

单个选项的内容:

合在一起: 

第一行列出的大写单词的含义在之后的文字会讲

top

作用:显示Linux进程,实时动态查看系统资源使用情况的命令(类似Windows的任务管理器)

当然监控和分析Linux系统性能的工具还有很多,下面给一张图:

(来自https://www.brendangregg.com/linuxperf.html网) 

查看/proc目录

proc的全称是process

ls /proc

PID

 会看到许多用数字命名的目录,这个数字其实是每个进程独一无二的PID,非负整数PID是进程唯一标识符,用于对每个进程编号,可以理解为身份证,这样方便操作系统管理

手动查看自己进程的目录会在"手动用ps查看自己运行的程序"下演示

3.手动用ps查看自己运行的程序

编译以下代码并运行:

#include<stdio.h>intmain(){	while (1)		printf("The process is running...\n");	return 0;}

使用以下命令查看:

ps ajx | head -1 && ps ajx | grep "test"

 &&连接两条命令:

1. ps ajx | head -1 : 要ps ajx打印结果的第一行

2. ps ajx | grep "test" :使用grep过滤进程

执行结果: test.out已经加载到内存中成为了一个进程

(两条命令必须成功执行,因此会过滤出grep命令的进程,如果不想显示可以再加上grep -v grep反向过滤) 

grep命令复习可参见OS6.【Linux】基本指令入门(5)文章 

在/proc手动查看自己运行的程序目录

先运行上方的代码:

记住自己进程的PID,这里是23891

ls /proc | grep "23891"

能查到一个目录:

下面是23891目录里面的内容:

如果用Ctrl+C杀死进程后,再运行同样的程序,PID是会变动的:

杀死进程的常用方法

方法1:上方提到的Ctrl+C

方法2:kill命令

可以给进程发送9号信号:

kill -l用于列出支持的所有信号

其中9) SIGKILL是让进程立即终止的信号 

结论:同一个程序两次运行时PID可能不同

进程目录中的文件

cwd

cwd全称是correct work directory,指当前进程的工作目录(也称工作路径)

exe

exe全称是execute,指进程正在运行的程序

理解"当前路径"的含义

例如touch+文件名(不含路径)会在当前路径下创建文件,为什么是当前路径?

答:当touch命令运行时,其进程的文件在/proc目录下,其中cwd默认指向当前进程的工作路径

又如C语言的fopen()函数,在某些情况下,如果当前路径中没有文件会自动在当前路径下新建文件

4.如何管理一个进程

一个操作系统上是运行着多个进程的,那就涉及到操作系统是如何管理多个进程的

按照之前OS16.【Linux】冯依诺曼体系结构和操作系统的浅层理解文章对管理的定义:管理=先描述再组织

描述一个进程需要它的属性,例如进程编号、进程状态(是否运行状态?是否阻塞状态......)、优先级等等,将这些属性打包起来形成结构体对象,这个结构体对象称为进程控制块(PCB,全称Process Control Block,进程控制块)

注: 上面指的PCB不是印刷电路板(Printed Circuit Board)

注意:任何一个进程.在加裁到内存形成真正的进程时,操作系统要先创建PCB

 (图片来自https://www.tutorialspoint.com/operating_system/os_processes.htm)

摘一段网上的描述: 

1

Process State(运行状态)

The current state of the process i.e., whether it is ready, running, waiting, or whatever.

(任务状态、退出代码、退出信号等)

2

Process privileges(进程优先级),指相对于其他进程的优先级

This is required to allow/disallow access to system resources.

3

Process ID(进程编号)

Unique identification(独一无二的标识) for each of the process in the operating system.

4

Pointer(指针)

A pointer to parent process.(其实不仅仅是指向父进程的指针,还包括程序代码和进程相关数据的指针、和其他进程共享的内存块的指针)

5

Program Counter(程序计数器)

Program Counter is a pointer to the address of the next instruction to be executed for this process.

6

CPU registers(CPU寄存器) (上下文数据)

Various CPU registers where process need to be stored for execution for running state.

7

CPU Scheduling Information(CPU调度信息)

Process priority and other scheduling information which is required to schedule the process.

8

Memory management information(内存管理信息)

This includes the information of page table, memory limits, Segment table depending on memory used by the operating system.

9

Accounting information(记帐信息)

This includes the amount of CPU used for process execution, time limits, execution ID etc.

(可能包括处理器时间总和、使用的时钟数总和、时间限制、记账号等)

10

IO status information(IO状态信息)

This includes a list of I/O devices allocated to the process.

(包括显示的I/O请求、分配给进程的I/O设备、被进程使用的文件列表)

下面解释几个简单的概念 

程序计数器PC

存储进程即将执行的下一条指令的地址,简单理解为寄存器层面上为16位下为CS:IP,x86架构下的EIP寄存器,x64架构下的RIP寄存器

更详细的内容参见王爽老师的《汇编语言》下面摘一段描述:

深层理解进程的定义

进程=内核数据结构对象(PCB,其实还有别的,后面会讲)+代码段+数据段

1.PCB可以形象理解为教务系统中能查到学生信息,而代码段+数据段可以形象理解为学生本人

2.PCB由操作系统管理,而代码段+数据段由程序自行维护

3.PCB中还含有相关的指针信息,用于定位代码段+数据段,便于操作系统管理


讲完了描述,讲讲操作系统组织多个进程的方法:把PCB把结构体串起来,通常使用双向链表

struct PCB{    //进程的属性(这里省略)    struct PCB* next;//指向下一个进程的结构体    struct PCB* prev;//指向上一个进程的结构体}

这样操作系统可以通过对链表的增删查改达到管理多个进程的目的

CPU想要执行进程,直接去进程队列去要就行,注意:在排队的是进程的PCB,不是代码段+数据段

5.Linux下的PCB的简单理解

Linux下的PCB是task_struct结构体,其包含进程的各种属性,用于描述进程,task_struct会加载到内存中,下面给出内核源代码:

/include/linux/sched.h下,这里全部给出来,方便查阅:

struct task_struct {#ifdef CONFIG_THREAD_INFO_IN_TASK	/*	 * For reasons of header soup (see current_thread_info()), this	 * must be the first element of task_struct.	 */	struct thread_info		thread_info;#endif	unsigned int			__state;	/* saved state for "spinlock sleepers" */	unsigned int			saved_state;	/*	 * This begins the randomizable portion of task_struct. Only	 * scheduling-critical items should be added above here.	 */	randomized_struct_fields_start	void				*stack;	refcount_t			usage;	/* Per task flags (PF_*), defined further below: */	unsigned int			flags;	unsigned int			ptrace;#ifdef CONFIG_MEM_ALLOC_PROFILING	struct alloc_tag		*alloc_tag;#endif#ifdef CONFIG_SMP	int				on_cpu;	struct __call_single_node	wake_entry;	unsigned int			wakee_flips;	unsigned long			wakee_flip_decay_ts;	struct task_struct		*last_wakee;	/*	 * recent_used_cpu is initially set as the last CPU used by a task	 * that wakes affine another task. Waker/wakee relationships can	 * push tasks around a CPU where each wakeup moves to the next one.	 * Tracking a recently used CPU allows a quick search for a recently	 * used CPU that may be idle.	 */	int				recent_used_cpu;	int				wake_cpu;#endif	int				on_rq;	int				prio;	int				static_prio;	int				normal_prio;	unsigned int			rt_priority;	struct sched_entity		se;	struct sched_rt_entity		rt;	struct sched_dl_entity		dl;	struct sched_dl_entity		*dl_server;#ifdef CONFIG_SCHED_CLASS_EXT	struct sched_ext_entity		scx;#endif	const struct sched_class	*sched_class;#ifdef CONFIG_SCHED_CORE	struct rb_node			core_node;	unsigned long			core_cookie;	unsigned int			core_occupation;#endif#ifdef CONFIG_CGROUP_SCHED	struct task_group		*sched_task_group;#endif#ifdef CONFIG_UCLAMP_TASK	/*	 * Clamp values requested for a scheduling entity.	 * Must be updated with task_rq_lock() held.	 */	struct uclamp_se		uclamp_req[UCLAMP_CNT];	/*	 * Effective clamp values used for a scheduling entity.	 * Must be updated with task_rq_lock() held.	 */	struct uclamp_se		uclamp[UCLAMP_CNT];#endif	struct sched_statistics         stats;#ifdef CONFIG_PREEMPT_NOTIFIERS	/* List of struct preempt_notifier: */	struct hlist_head		preempt_notifiers;#endif#ifdef CONFIG_BLK_DEV_IO_TRACE	unsigned int			btrace_seq;#endif	unsigned int			policy;	unsigned long			max_allowed_capacity;	int				nr_cpus_allowed;	const cpumask_t			*cpus_ptr;	cpumask_t			*user_cpus_ptr;	cpumask_t			cpus_mask;	void				*migration_pending;#ifdef CONFIG_SMP	unsigned short			migration_disabled;#endif	unsigned short			migration_flags;#ifdef CONFIG_PREEMPT_RCU	int				rcu_read_lock_nesting;	union rcu_special		rcu_read_unlock_special;	struct list_head		rcu_node_entry;	struct rcu_node			*rcu_blocked_node;#endif/* #ifdef CONFIG_PREEMPT_RCU */#ifdef CONFIG_TASKS_RCU	unsigned long			rcu_tasks_nvcsw;	u8				rcu_tasks_holdout;	u8				rcu_tasks_idx;	int				rcu_tasks_idle_cpu;	struct list_head		rcu_tasks_holdout_list;	int				rcu_tasks_exit_cpu;	struct list_head		rcu_tasks_exit_list;#endif/* #ifdef CONFIG_TASKS_RCU */#ifdef CONFIG_TASKS_TRACE_RCU	int				trc_reader_nesting;	int				trc_ipi_to_cpu;	union rcu_special		trc_reader_special;	struct list_head		trc_holdout_list;	struct list_head		trc_blkd_node;	int				trc_blkd_cpu;#endif/* #ifdef CONFIG_TASKS_TRACE_RCU */	struct sched_info		sched_info;	struct list_head		tasks;#ifdef CONFIG_SMP	struct plist_node		pushable_tasks;	struct rb_node			pushable_dl_tasks;#endif	struct mm_struct		*mm;	struct mm_struct		*active_mm;	struct address_space		*faults_disabled_mapping;	int				exit_state;	int				exit_code;	int				exit_signal;	/* The signal sent when the parent dies: */	int				pdeath_signal;	/* JOBCTL_*, siglock protected: */	unsigned long			jobctl;	/* Used for emulating ABI behavior of previous Linux versions: */	unsigned int			personality;	/* Scheduler bits, serialized by scheduler locks: */	unsigned			sched_reset_on_fork:1;	unsigned			sched_contributes_to_load:1;	unsigned			sched_migrated:1;	unsigned			sched_task_hot:1;	/* Force alignment to the next boundary: */	unsigned			:0;	/* Unserialized, strictly 'current' */	/*	 * This field must not be in the scheduler word above due to wakelist	 * queueing no longer being serialized by p->on_cpu. However:	 *	 * p->XXX = X;			ttwu()	 * schedule()			  if (p->on_rq && ..) // false	 *   smp_mb__after_spinlock();	  if (smp_load_acquire(&p->on_cpu) && //true	 *   deactivate_task()		      ttwu_queue_wakelist())	 *     p->on_rq = 0;			p->sched_remote_wakeup = Y;	 *	 * guarantees all stores of 'current' are visible before	 * ->sched_remote_wakeup gets used, so it can be in this word.	 */	unsigned			sched_remote_wakeup:1;#ifdef CONFIG_RT_MUTEXES	unsigned			sched_rt_mutex:1;#endif	/* Bit to tell TOMOYO we're in execve(): */	unsigned			in_execve:1;	unsigned			in_iowait:1;#ifndef TIF_RESTORE_SIGMASK	unsigned			restore_sigmask:1;#endif#ifdef CONFIG_MEMCG_V1	unsigned			in_user_fault:1;#endif#ifdef CONFIG_LRU_GEN	/* whether the LRU algorithm may apply to this access */	unsigned			in_lru_fault:1;#endif#ifdef CONFIG_COMPAT_BRK	unsigned			brk_randomized:1;#endif#ifdef CONFIG_CGROUPS	/* disallow userland-initiated cgroup migration */	unsigned			no_cgroup_migration:1;	/* task is frozen/stopped (used by the cgroup freezer) */	unsigned			frozen:1;#endif#ifdef CONFIG_BLK_CGROUP	unsigned			use_memdelay:1;#endif#ifdef CONFIG_PSI	/* Stalled due to lack of memory */	unsigned			in_memstall:1;#endif#ifdef CONFIG_PAGE_OWNER	/* Used by page_owner=on to detect recursion in page tracking. */	unsigned			in_page_owner:1;#endif#ifdef CONFIG_EVENTFD	/* Recursion prevention for eventfd_signal() */	unsigned			in_eventfd:1;#endif#ifdef CONFIG_ARCH_HAS_CPU_PASID	unsigned			pasid_activated:1;#endif#ifdef CONFIG_X86_BUS_LOCK_DETECT	unsigned			reported_split_lock:1;#endif#ifdef CONFIG_TASK_DELAY_ACCT	/* delay due to memory thrashing */	unsigned                        in_thrashing:1;#endif	unsigned			in_nf_duplicate:1;#ifdef CONFIG_PREEMPT_RT	struct netdev_xmit		net_xmit;#endif	unsigned long			atomic_flags; /* Flags requiring atomic access. */	struct restart_block		restart_block;	pid_t				pid;	pid_t				tgid;#ifdef CONFIG_STACKPROTECTOR	/* Canary value for the -fstack-protector GCC feature: */	unsigned long			stack_canary;#endif	/*	 * Pointers to the (original) parent process, youngest child, younger sibling,	 * older sibling, respectively.  (p->father can be replaced with	 * p->real_parent->pid)	 */	/* Real parent process: */	struct task_struct __rcu	*real_parent;	/* Recipient of SIGCHLD, wait4() reports: */	struct task_struct __rcu	*parent;	/*	 * Children/sibling form the list of natural children:	 */	struct list_head		children;	struct list_head		sibling;	struct task_struct		*group_leader;	/*	 * 'ptraced' is the list of tasks this task is using ptrace() on.	 *	 * This includes both natural children and PTRACE_ATTACH targets.	 * 'ptrace_entry' is this task's link on the p->parent->ptraced list.	 */	struct list_head		ptraced;	struct list_head		ptrace_entry;	/* PID/PID hash table linkage. */	struct pid			*thread_pid;	struct hlist_node		pid_links[PIDTYPE_MAX];	struct list_head		thread_node;	struct completion		*vfork_done;	/* CLONE_CHILD_SETTID: */	int __user			*set_child_tid;	/* CLONE_CHILD_CLEARTID: */	int __user			*clear_child_tid;	/* PF_KTHREAD | PF_IO_WORKER */	void				*worker_private;	u64				utime;	u64				stime;#ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME	u64				utimescaled;	u64				stimescaled;#endif	u64				gtime;	struct prev_cputime		prev_cputime;#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN	struct vtime			vtime;#endif#ifdef CONFIG_NO_HZ_FULL	atomic_t			tick_dep_mask;#endif	/* Context switch counts: */	unsigned long			nvcsw;	unsigned long			nivcsw;	/* Monotonic time in nsecs: */	u64				start_time;	/* Boot based time in nsecs: */	u64				start_boottime;	/* MM fault and swap info: this can arguably be seen as either mm-specific or thread-specific: */	unsigned long			min_flt;	unsigned long			maj_flt;	/* Empty if CONFIG_POSIX_CPUTIMERS=n */	struct posix_cputimers		posix_cputimers;#ifdef CONFIG_POSIX_CPU_TIMERS_TASK_WORK	struct posix_cputimers_work	posix_cputimers_work;#endif	/* Process credentials: */	/* Tracer's credentials at attach: */	const struct cred __rcu		*ptracer_cred;	/* Objective and real subjective task credentials (COW): */	const struct cred __rcu		*real_cred;	/* Effective (overridable) subjective task credentials (COW): */	const struct cred __rcu		*cred;#ifdef CONFIG_KEYS	/* Cached requested key. */	struct key			*cached_requested_key;#endif	/*	 * executable name, excluding path.	 *	 * - normally initialized begin_new_exec()	 * - set it with set_task_comm()	 *   - strscpy_pad() to ensure it is always NUL-terminated and	 *     zero-padded	 *   - task_lock() to ensure the operation is atomic and the name is	 *     fully updated.	 */	char				comm[TASK_COMM_LEN];	struct nameidata		*nameidata;#ifdef CONFIG_SYSVIPC	struct sysv_sem			sysvsem;	struct sysv_shm			sysvshm;#endif#ifdef CONFIG_DETECT_HUNG_TASK	unsigned long			last_switch_count;	unsigned long			last_switch_time;#endif	/* Filesystem information: */	struct fs_struct		*fs;	/* Open file information: */	struct files_struct		*files;#ifdef CONFIG_IO_URING	struct io_uring_task		*io_uring;#endif	/* Namespaces: */	struct nsproxy			*nsproxy;	/* Signal handlers: */	struct signal_struct		*signal;	struct sighand_struct __rcu		*sighand;	sigset_t			blocked;	sigset_t			real_blocked;	/* Restored if set_restore_sigmask() was used: */	sigset_t			saved_sigmask;	struct sigpending		pending;	unsigned long			sas_ss_sp;	size_t				sas_ss_size;	unsigned int			sas_ss_flags;	struct callback_head		*task_works;#ifdef CONFIG_AUDIT#ifdef CONFIG_AUDITSYSCALL	struct audit_context		*audit_context;#endif	kuid_t				loginuid;	unsigned int			sessionid;#endif	struct seccomp			seccomp;	struct syscall_user_dispatch	syscall_dispatch;	/* Thread group tracking: */	u64				parent_exec_id;	u64				self_exec_id;	/* Protection against (de-)allocation: mm, files, fs, tty, keyrings, mems_allowed, mempolicy: */	spinlock_t			alloc_lock;	/* Protection of the PI data structures: */	raw_spinlock_t			pi_lock;	struct wake_q_node		wake_q;#ifdef CONFIG_RT_MUTEXES	/* PI waiters blocked on a rt_mutex held by this task: */	struct rb_root_cached		pi_waiters;	/* Updated under owner's pi_lock and rq lock */	struct task_struct		*pi_top_task;	/* Deadlock detection and priority inheritance handling: */	struct rt_mutex_waiter		*pi_blocked_on;#endif#ifdef CONFIG_DEBUG_MUTEXES	/* Mutex deadlock detection: */	struct mutex_waiter		*blocked_on;#endif#ifdef CONFIG_DETECT_HUNG_TASK_BLOCKER	/*	 * Encoded lock address causing task block (lower 2 bits = type from	 * <linux/hung_task.h>). Accessed via hung_task_*() helpers.	 */	unsigned long			blocker;#endif#ifdef CONFIG_DEBUG_ATOMIC_SLEEP	int				non_block_count;#endif#ifdef CONFIG_TRACE_IRQFLAGS	struct irqtrace_events		irqtrace;	unsigned int			hardirq_threaded;	u64				hardirq_chain_key;	int				softirqs_enabled;	int				softirq_context;	int				irq_config;#endif#ifdef CONFIG_PREEMPT_RT	int				softirq_disable_cnt;#endif#ifdef CONFIG_LOCKDEPdefine MAX_LOCK_DEPTH			48UL	u64				curr_chain_key;	int				lockdep_depth;	unsigned int			lockdep_recursion;	struct held_lock		held_locks[MAX_LOCK_DEPTH];#endif#if defined(CONFIG_UBSAN) && !defined(CONFIG_UBSAN_TRAP)	unsigned int			in_ubsan;#endif	/* Journalling filesystem info: */	void				*journal_info;	/* Stacked block device info: */	struct bio_list			*bio_list;	/* Stack plugging: */	struct blk_plug			*plug;	/* VM state: */	struct reclaim_state		*reclaim_state;	struct io_context		*io_context;#ifdef CONFIG_COMPACTION	struct capture_control		*capture_control;#endif	/* Ptrace state: */	unsigned long			ptrace_message;	kernel_siginfo_t		*last_siginfo;	struct task_io_accounting	ioac;#ifdef CONFIG_PSI	/* Pressure stall state */	unsigned int			psi_flags;#endif#ifdef CONFIG_TASK_XACCT	/* Accumulated RSS usage: */	u64				acct_rss_mem1;	/* Accumulated virtual memory usage: */	u64				acct_vm_mem1;	/* stime + utime since last update: */	u64				acct_timexpd;#endif#ifdef CONFIG_CPUSETS	/* Protected by ->alloc_lock: */	nodemask_t			mems_allowed;	/* Sequence number to catch updates: */	seqcount_spinlock_t		mems_allowed_seq;	int				cpuset_mem_spread_rotor;#endif#ifdef CONFIG_CGROUPS	/* Control Group info protected by css_set_lock: */	struct css_set __rcu		*cgroups;	/* cg_list protected by css_set_lock and tsk->alloc_lock: */	struct list_head		cg_list;#endif#ifdef CONFIG_X86_CPU_RESCTRL	u32				closid;	u32				rmid;#endif#ifdef CONFIG_FUTEX	struct robust_list_head __user	*robust_list;#ifdef CONFIG_COMPAT	struct compat_robust_list_head __user *compat_robust_list;#endif	struct list_head		pi_state_list;	struct futex_pi_state		*pi_state_cache;	struct mutex			futex_exit_mutex;	unsigned int			futex_state;#endif#ifdef CONFIG_PERF_EVENTS	u8				perf_recursion[PERF_NR_CONTEXTS];	struct perf_event_context	*perf_event_ctxp;	struct mutex			perf_event_mutex;	struct list_head		perf_event_list;	struct perf_ctx_data __rcu	*perf_ctx_data;#endif#ifdef CONFIG_DEBUG_PREEMPT	unsigned long			preempt_disable_ip;#endif#ifdef CONFIG_NUMA	/* Protected by alloc_lock: */	struct mempolicy		*mempolicy;	short				il_prev;	u8				il_weight;	short				pref_node_fork;#endif#ifdef CONFIG_NUMA_BALANCING	int				numa_scan_seq;	unsigned int			numa_scan_period;	unsigned int			numa_scan_period_max;	int				numa_preferred_nid;	unsigned long			numa_migrate_retry;	/* Migration stamp: */	u64				node_stamp;	u64				last_task_numa_placement;	u64				last_sum_exec_runtime;	struct callback_head		numa_work;	/*	 * This pointer is only modified for current in syscall and	 * pagefault context (and for tasks being destroyed), so it can be read	 * from any of the following contexts:	 *  - RCU read-side critical section	 *  - current->numa_group from everywhere	 *  - task's runqueue locked, task not running	 */	struct numa_group __rcu		*numa_group;	/*	 * numa_faults is an array split into four regions:	 * faults_memory, faults_cpu, faults_memory_buffer, faults_cpu_buffer	 * in this precise order.	 *	 * faults_memory: Exponential decaying average of faults on a per-node	 * basis. Scheduling placement decisions are made based on these	 * counts. The values remain static for the duration of a PTE scan.	 * faults_cpu: Track the nodes the process was running on when a NUMA	 * hinting fault was incurred.	 * faults_memory_buffer and faults_cpu_buffer: Record faults per node	 * during the current scan window. When the scan completes, the counts	 * in faults_memory and faults_cpu decay and these values are copied.	 */	unsigned long			*numa_faults;	unsigned long			total_numa_faults;	/*	 * numa_faults_locality tracks if faults recorded during the last	 * scan window were remote/local or failed to migrate. The task scan	 * period is adapted based on the locality of the faults with different	 * weights depending on whether they were shared or private faults	 */	unsigned long			numa_faults_locality[3];	unsigned long			numa_pages_migrated;#endif/* CONFIG_NUMA_BALANCING */#ifdef CONFIG_RSEQ	struct rseq __user *rseq;	u32 rseq_len;	u32 rseq_sig;	/*	 * RmW on rseq_event_mask must be performed atomically	 * with respect to preemption.	 */	unsigned long rseq_event_mask;ifdef CONFIG_DEBUG_RSEQ	/*	 * This is a place holder to save a copy of the rseq fields for	 * validation of read-only fields. The struct rseq has a	 * variable-length array at the end, so it cannot be used	 * directly. Reserve a size large enough for the known fields.	 */	char				rseq_fields[sizeof(struct rseq)];endif#endif#ifdef CONFIG_SCHED_MM_CID	int				mm_cid;		/* Current cid in mm */	int				last_mm_cid;	/* Most recent cid in mm */	int				migrate_from_cpu;	int				mm_cid_active;	/* Whether cid bitmap is active */	struct callback_head		cid_work;#endif	struct tlbflush_unmap_batch	tlb_ubc;	/* Cache last used pipe for splice(): */	struct pipe_inode_info		*splice_pipe;	struct page_frag		task_frag;#ifdef CONFIG_TASK_DELAY_ACCT	struct task_delay_info		*delays;#endif#ifdef CONFIG_FAULT_INJECTION	int				make_it_fail;	unsigned int			fail_nth;#endif	/*	 * When (nr_dirtied >= nr_dirtied_pause), it's time to call	 * balance_dirty_pages() for a dirty throttling pause:	 */	int				nr_dirtied;	int				nr_dirtied_pause;	/* Start of a write-and-pause period: */	unsigned long			dirty_paused_when;#ifdef CONFIG_LATENCYTOP	int				latency_record_count;	struct latency_record		latency_record[LT_SAVECOUNT];#endif	/*	 * Time slack values; these are used to round up poll() and	 * select() etc timeout values. These are in nanoseconds.	 */	u64				timer_slack_ns;	u64				default_timer_slack_ns;#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)	unsigned int			kasan_depth;#endif#ifdef CONFIG_KCSAN	struct kcsan_ctx		kcsan_ctx;#ifdef CONFIG_TRACE_IRQFLAGS	struct irqtrace_events		kcsan_save_irqtrace;#endif#ifdef CONFIG_KCSAN_WEAK_MEMORY	int				kcsan_stack_depth;#endif#endif#ifdef CONFIG_KMSAN	struct kmsan_ctx		kmsan_ctx;#endif#if IS_ENABLED(CONFIG_KUNIT)	struct kunit			*kunit_test;#endif#ifdef CONFIG_FUNCTION_GRAPH_TRACER	/* Index of current stored address in ret_stack: */	int				curr_ret_stack;	int				curr_ret_depth;	/* Stack of return addresses for return function tracing: */	unsigned long			*ret_stack;	/* Timestamp for last schedule: */	unsigned long long		ftrace_timestamp;	unsigned long long		ftrace_sleeptime;	/*	 * Number of functions that haven't been traced	 * because of depth overrun:	 */	atomic_t			trace_overrun;	/* Pause tracing: */	atomic_t			tracing_graph_pause;#endif#ifdef CONFIG_TRACING	/* Bitmask and counter of trace recursion: */	unsigned long			trace_recursion;#endif/* CONFIG_TRACING */#ifdef CONFIG_KCOV	/* See kernel/kcov.c for more details. */	/* Coverage collection mode enabled for this task (0 if disabled): */	unsigned int			kcov_mode;	/* Size of the kcov_area: */	unsigned int			kcov_size;	/* Buffer for coverage collection: */	void				*kcov_area;	/* KCOV descriptor wired with this task or NULL: */	struct kcov			*kcov;	/* KCOV common handle for remote coverage collection: */	u64				kcov_handle;	/* KCOV sequence number: */	int				kcov_sequence;	/* Collect coverage from softirq context: */	unsigned int			kcov_softirq;#endif#ifdef CONFIG_MEMCG_V1	struct mem_cgroup		*memcg_in_oom;#endif#ifdef CONFIG_MEMCG	/* Number of pages to reclaim on returning to userland: */	unsigned int			memcg_nr_pages_over_high;	/* Used by memcontrol for targeted memcg charge: */	struct mem_cgroup		*active_memcg;	/* Cache for current->cgroups->memcg->objcg lookups: */	struct obj_cgroup		*objcg;#endif#ifdef CONFIG_BLK_CGROUP	struct gendisk			*throttle_disk;#endif#ifdef CONFIG_UPROBES	struct uprobe_task		*utask;#endif#if defined(CONFIG_BCACHE) || defined(CONFIG_BCACHE_MODULE)	unsigned int			sequential_io;	unsigned int			sequential_io_avg;#endif	struct kmap_ctrl		kmap_ctrl;#ifdef CONFIG_DEBUG_ATOMIC_SLEEP	unsigned long			task_state_change;ifdef CONFIG_PREEMPT_RT	unsigned long			saved_state_change;endif#endif	struct rcu_head			rcu;	refcount_t			rcu_users;	int				pagefault_disabled;#ifdef CONFIG_MMU	struct task_struct		*oom_reaper_list;	struct timer_list		oom_reaper_timer;#endif#ifdef CONFIG_VMAP_STACK	struct vm_struct		*stack_vm_area;#endif#ifdef CONFIG_THREAD_INFO_IN_TASK	/* A live task holds one reference: */	refcount_t			stack_refcount;#endif#ifdef CONFIG_LIVEPATCH	int patch_state;#endif#ifdef CONFIG_SECURITY	/* Used by LSM modules for access restriction: */	void				*security;#endif#ifdef CONFIG_BPF_SYSCALL	/* Used by BPF task local storage */	struct bpf_local_storage __rcu	*bpf_storage;	/* Used for BPF run context */	struct bpf_run_ctx		*bpf_ctx;#endif	/* Used by BPF for per-TASK xdp storage */	struct bpf_net_context		*bpf_net_context;#ifdef CONFIG_GCC_PLUGIN_STACKLEAK	unsigned long			lowest_stack;	unsigned long			prev_lowest_stack;#endif#ifdef CONFIG_X86_MCE	void __user			*mce_vaddr;	__u64				mce_kflags;	u64				mce_addr;	__u64				mce_ripv : 1,					mce_whole_page : 1,					__mce_reserved : 62;	struct callback_head		mce_kill_me;	int				mce_count;#endif#ifdef CONFIG_KRETPROBES	struct llist_head               kretprobe_instances;#endif#ifdef CONFIG_RETHOOK	struct llist_head               rethooks;#endif#ifdef CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH	/*	 * If L1D flush is supported on mm context switch	 * then we use this callback head to queue kill work	 * to kill tasks that are not running on SMT disabled	 * cores	 */	struct callback_head		l1d_flush_kill;#endif#ifdef CONFIG_RV	/*	 * Per-task RV monitor. Nowadays fixed in RV_PER_TASK_MONITORS.	 * If we find justification for more monitors, we can think	 * about adding more or developing a dynamic method. So far,	 * none of these are justified.	 */	union rv_task_monitor		rv[RV_PER_TASK_MONITORS];#endif#ifdef CONFIG_USER_EVENTS	struct user_event_mm		*user_event_mm;#endif	/* CPU-specific state of this task: */	struct thread_struct		thread;	/*	 * New fields for task_struct should be added above here, so that	 * they are included in the randomized portion of task_struct.	 */	randomized_struct_fields_end} __attribute__ ((aligned (64)));

6.练习

下列有关进程的说法中,错误的是? [多选] A.进程与程序是一一对应的 B.进程与作业是一一对应的 C.进程是静态的 D.进程是动态的过程

答:

作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合,不是进程

以下摘自《 计算机操作系统(慕课版)》

作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且配有一份作业 处理机调度说明书,系统根据该说明书对程序的运行进行控制。在多道批处理系统中,会将作业作为基本单位从外存调入内存。

所以选ABC

下一篇文章将继续讲解进程的基础知识

原文首发于CSDN,点击阅读全文即可查看

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 01:02:29 HTTP/2.0 GET : https://f.mffb.com.cn/a/497099.html
  2. 运行时间 : 0.165719s [ 吞吐率:6.03req/s ] 内存消耗:4,899.29kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=9afbc3bd7f8d8e48989c197b903bbd9b
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001006s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001639s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000739s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000652s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001206s ]
  6. SELECT * FROM `set` [ RunTime:0.000599s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001538s ]
  8. SELECT * FROM `article` WHERE `id` = 497099 LIMIT 1 [ RunTime:0.001407s ]
  9. UPDATE `article` SET `lasttime` = 1783011749 WHERE `id` = 497099 [ RunTime:0.025582s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000806s ]
  11. SELECT * FROM `article` WHERE `id` < 497099 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001295s ]
  12. SELECT * FROM `article` WHERE `id` > 497099 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001681s ]
  13. SELECT * FROM `article` WHERE `id` < 497099 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001768s ]
  14. SELECT * FROM `article` WHERE `id` < 497099 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002303s ]
  15. SELECT * FROM `article` WHERE `id` < 497099 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.027504s ]
0.169621s